Wie verwende ich diesen regulären Ausdruck mit grep?

Wie verwende ich diesen regulären Ausdruck mit grep?

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 grepPCRE, Perl Compatible Regular Expression ( -P) unterstützt werden

Sie benötigen also grep -Pund um nur den übereinstimmenden Teil zu erfassen, -o:

% grep -Po '(?:([bcdfghjklmnpqrstvwxzy])(?!.{1,2}\1)){3}' <<<'foobarspfb'
rsp

verwandte Informationen