正規表現で行に文字列を含むことのNOT,AND,OR

著者:杉浦

正規表現で行に文字列を含むことのNOT,AND,OR

 正規表現のlookaheadは文字列を消費しません。^(?=.*hoge)で行全体を先頭からlookaheadできます。この二つを用いることで、ある文字列を行に含む、含まないの組み合わせを正規表現で自由に作ることが出来ます。基本パーツは次の四つです。

^(?=.*hoge).*$ hogeを含む行
^(?!.*hoge).*$ hogeを含まない行 not A
^(?=.*hoge)(?=.*fuga).*$ hogeとfugaを含む行 A and B
^((?=.*hoge)|(?=.*fuga)).*$ hogeかfugaを含む行 A or B

 hoge,fugaにはそれぞれのかっことその中身を当てはめられます。これらを組み合わせて、好きに長い検索ができます。ABとBCの組み合わせかCDを含み、DEかCAを含まない行ならば((AB and BC) or CD) and not (DE and CA)であり、
^((?=.*AB)(?=.*BC)|(?=.*CD))(?!.*(?=.*DE)(?=.*CA)).*$

となります。

  • この記事いいね! (1)

著者について

杉浦 administrator