私は正規表現の初心者ですが、正規表現のチュートリアル/テスト サイトで、連続する 3 つの子音を検索できるコマンドを見つけました。唯一の問題は、grep でそのコマンドを使用する方法がわからないことです。誰か助けてくれませんか? 単語リストのテキスト ファイルを検索しようとしています。
(?:([bcdfghjklmnpqrstvwxzy])(?!.{1,2}\1)){3}
答え1
正規表現パターンには以下が含まれます:
- 非捕獲グループ、
(?:)
- ゼロ幅の負の先読み、
(?!)
grep
これらはPCRE(Perl互換正規表現)でのみサポートされています( -P
)
したがって、grep -P
一致した部分のみをキャプチャするには、 とが必要です-o
。
% grep -Po '(?:([bcdfghjklmnpqrstvwxzy])(?!.{1,2}\1)){3}' <<<'foobarspfb'
rsp