前後にあったりなかったりの正規表現

前後にあったりなかったりの正規表現

前にアレがある、前にアレがない、後ろにアレがある、後ろにアレがない、というのを正規表現で検索できて便利なのですが、記号がわからなくていつも困るのでなんとかしようと思いました。
とりあえず並べてみます。

1. 前にアレがある
肯定戻り読み(後読み) Positive Lookbehind
(?<=アレ)コレ

2. 前にアレがない
否定戻り読み(後読み) Negative Lookbehind
(?<!アレ)コレ

3. 後ろにアレがある
肯定先読み Positive Lookahead
コレ(?=アレ)

4. 後ろにアレがない
否定先読み Negative Lookahead
コレ(?!アレ)

日本語の名前でも英語の名前でも、肯定か否定かが最初にきていますが、個人的には前か後かを最初に考えるので、それで名前がわかりにくいんだなと思いました。前方肯定ナントカとか後方否定ナントカとかにしてくれればわかりそうな気がします。
さらにややこしいのは、前にくるときと後ろにくるときとで記号が違うというところです。前を見るときは「<」がいるんですね。

ちょっと頑張れば覚えられそうですが、毎日使うというほどでもないのでもういいやと思ってIMEに登録しました。

まえにある → (?<=a)b
まえにない → (?<!a)b
あとにある → a(?=b)
あとにない → a(?!b)

登録したキーワードを覚えていないといけないので、どっちもどっちのような気がします。正規表現用に接頭辞を決めて登録すると補完で呼び出せて便利かもしれません。そのうち記号で覚えてしまう可能性にも期待したいと思います。

で、えーと、何を検索したかったんだっけ......。

この記事を読んだ人にオススメ