正規表現で「○○を含みかつ、××を含む」のようなAND条件を指定しようとすると、OR条件の「(○○|××)」のように簡単にはいかない。
ではどうするか?
正規表現では肯定先読みを使ってAND条件を指定する必要があり、今回は複数単語が前後を問わず文字列内に全て含まれていればtrueを返す、リスティング広告用語で言うところの「絞り込み部分一致」を表現する方法を紹介する。
肯定先読みの書式
基本的な書式は以下のとおりとなる。
^(?=.*ほげほげ).*$
これで「ほげほげ」を含む部分一致のマッチングをおこなうことができる。
複数単語の場合
複数単語の場合は先ほどの肯定先読みを複数書くだけで良い。
^(?=.*ほげほげ)(?=.*ふがふが).*$
これで以下の文字列パターン全てに対しマッチさせることができる。
ほげほげぴよぴよふがふが
ふがふがほげほげぴよぴよ
ぴよぴよふがふがほげほげ