今回は、正規表現における否定条件の記述方法と否定先読みについて説明します。
否定的先読みとは
?! で始まる正規表現を括弧 () で括ることにより、指定した文字列を含まないという条件(否定的先読み)でマッチングを行うことができます。また、否定的先読みの前後に別のパターンをつなげて記述することも可能です。
否定的先読みを使用した例
下記の例では否定的先読み(?!~)の前後に文頭を示す ^ と文末を示す $ をつなげて行を検索するようにしています。
〜を含まない
「abc」という文字列を含まない行にマッチする。
1 |
^(?!.*abc).*$ |
〜または〜を含まない
「abc」または「efg」という文字列を含まない行にマッチする。
1 |
^(?!.*(abc|efg)).*$ |
条件を増やしたい場合は、各単語を | で区切って追加してください。
〜で始まらない
「abc」という文字列から始まらない行にマッチする。
1 |
^(?!abc).*$ |
〜で終わらない
「abc」という文字列で終わらない行にマッチする。
1 |
^(?!.*abc$).*$ |
〜を含むが、〜を含まない
「abc」を含み、「def」を含まない行にマッチする。
1 |
^(?=.*abc)(?!.*def).*$ |
?= は肯定先読みを意味します。(※コードに間違いがあったため訂正しました)
まとめ
否定の条件を使用すると検索対象外を排除したマッチングが可能になります。また | や () で条件を区切って追加するとさらに検索対象を絞り込むことができます。否定の正規表現を活用してより効率的な検索を行うようにしましょう。