この正規表現を grep で使用するにはどうすればいいですか?

この正規表現を grep で使用するにはどうすればいいですか?

私は正規表現の初心者ですが、正規表現のチュートリアル/テスト サイトで、連続する 3 つの子音を検索できるコマンドを見つけました。唯一の問題は、grep でそのコマンドを使用する方法がわからないことです。誰か助けてくれませんか? 単語リストのテキスト ファイルを検索しようとしています。

(?:([bcdfghjklmnpqrstvwxzy])(?!.{1,2}\1)){3}

答え1

正規表現パターンには以下が含まれます:

  • 非捕獲グループ、(?:)
  • ゼロ幅の負の先読み、(?!)

grepこれらはPCRE(Perl互換正規表現)でのみサポートされています( -P

したがって、grep -P一致した部分のみをキャプチャするには、 とが必要です-o

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

関連情報