正規表現_( ?=hoge )

タイトルにおいて、半角スペースを入れているがこれは読みやすくする為にいれている。

 

I'm ␣(?=.*glad)sad

 

上記にマッチするパターンは、

1.「 I'm ␣ 」の後ろどこかで「 glad 」が出現。

且つ

2.「 sad 」は「 I'm ␣ 」の直後に位置していなければならない。

 ※ ␣ : 半角スペース

 

上記の正規表現は、
『 I'm sad but glad 』には一致するが、
『 I'm glad but sad 』には一致しない。(I'm ␣ の直後にsadがないから)
 

まとめ

fuga(?=.*pattern)xxx   は、

fugaのどこか後ろpatternがあり、fugaの直後にxxxが存在する、

文字列 ( 正しくは位置 ) にマッチする。
右側に pattern が 存在する fuga にマッチ。

 

これが、 fuga␣(?=pattern)xxx  だった場合(.* がない)、
fuga␣の直後に「pattern」があり、 且つ fuga␣の直後に「xxx」 がある文字列に
マッチするという意味の正規表現になるので、
どこにも一致しない。

 

(  )  部分正規表現(?) が分かっていないことに気付いたところで以上。

 


koshinran.hateblo.jp