Ich bin neu bei Regex und habe auf einer Regex-Tutorial-/Testseite einen Befehl gefunden, mit dem ich nach 3 aufeinanderfolgenden Konsonanten suchen kann. Das einzige Problem ist, dass ich nicht herausfinden kann, wie ich ihn mit grep verwenden kann. Kann mir jemand helfen? Ich versuche, eine Textdatei mit einer Wortliste mit folgendem Befehl zu durchsuchen:
(?:([bcdfghjklmnpqrstvwxzy])(?!.{1,2}\1)){3}
Antwort1
Das Regex-Muster, das Sie haben, enthält:
- Nicht erfassende Gruppe,
(?:)
- Negativer Lookahead mit Nullbreite,
(?!)
die nur von grep
PCRE, Perl Compatible Regular Expression ( -P
) unterstützt werden
Sie benötigen also grep -P
und um nur den übereinstimmenden Teil zu erfassen, -o
:
% grep -Po '(?:([bcdfghjklmnpqrstvwxzy])(?!.{1,2}\1)){3}' <<<'foobarspfb'
rsp