否定の先読み
【開発環境】
OS:Win10(64ビット)
Ruby 3.0.1
VSCodeバージョン: 1.57.1
先読みには否定の先読みも用意されています。否定先読みを行うには、パターンを「(?!」から「)」の間に記述します。
/パターン(?!否定先読みパターン)パターン/
先読みはマッチしているかどうかを調べる位置を動かさずに先読みの中のパターンがマッチするかどうかを調べるものでしたが、否定先読みは位置を動かさずに指定したパターンを否定したものにマッチするかどうかを調べます。
/(a)(?!bbb)(b)/
例えば上記の場合、「a」で始まり、「a」の後に「bbb」が記述されていないかどうかを、マッチしていれば改めて「a」の後に「b」が続く文字列にマッチします。結果的に「a」の後に「b」が続くが「abbb」とはなっていない文字列にマッチします。
× abbb
× abbbon
○ abbe
○ ab
サンプルプログラム