正規表現で「○○を含みかつ、××を含む」のようなAND条件を指定しようとすると、OR条件の「(○○|××)」のように簡単にはいかない。

ではどうするか?

正規表現では肯定先読みを使ってAND条件を指定する必要があり、今回は複数単語が前後を問わず文字列内に全て含まれていればtrueを返す、リスティング広告用語で言うところの「絞り込み部分一致」を表現する方法を紹介する。

肯定先読みの書式

基本的な書式は以下のとおりとなる。

^(?=.*ほげほげ).*$

これで「ほげほげ」を含む部分一致のマッチングをおこなうことができる。

複数単語の場合

複数単語の場合は先ほどの肯定先読みを複数書くだけで良い。

^(?=.*ほげほげ)(?=.*ふがふが).*$

これで以下の文字列パターン全てに対しマッチさせることができる。

ほげほげぴよぴよふがふが
ふがふがほげほげぴよぴよ
ぴよぴよふがふがほげほげ