浜松のWEBシステム開発・スマートフォンアプリ開発・RTK-GNSS関連の開発はお任せください
株式会社シーポイントラボ
TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:静岡県浜松市中区富塚町1933-1 佐鳴湖パークタウンサウス2F

正規表現で行に文字列を含むことの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)