(?=expression) 後方一致指定(Ver1.90対応版)
目次Index -
正規表現Regular expression
特定の正規表現パターンの後に、さらに特定の正規表現パターンが続くことを指定しつつ、正規表現にヒットする文字列としては前方部分のみとするような指定が出来ます。
例えば、「abcxyz」という文字列を検索しつつ、ヒットする文字としては「abc」だけにしたいようなケースに使います。強調表示や置換の時に使うと便利です。
例えば「abc」の後に「xyz」が続きつつ、ヒットする文字列は「abc」だけにしたい場合は、
abc(?=xyz)
と指定します。
後方一致指定の後ろにさらにパターンを指定すると、両方の条件に一致するという意味になります。例えば、
abc(?=[123])(?=[234])
と指定すると、abcの後は1,2,3のいずれかで、なおかつ2,3,4のいずれかということになり、結果的にabc2とabc3となっているabcの部分のみにマッチします。
さらに応用して、行内に任意の単語がどちらともあるという意味のAND検索として使う方法もあります。
^(?=.*word1)(?=.*word2).*$
と指定すると、行内にword1とword2が両方ある行全体にマッチします。word1かword2はどちらが先に来てもいいです。
^(?=.*word1)(?=.*word2)(?=.*word3).*$
と指定すると、3つ以上の単語でも可能です。