正規表現の先読み/後読みは英語で覚えると楽


使うたびにググっているので自分用の備忘録です。

先読み=lookahead

(?=■) は “look ahead of ■” すなわち「■の前を見る」。

  • 「半角数字の連続の にある hoge」は “hoge looking ahead of \d+” と考えて hoge(?=\d+)
  • hoge と書いてから “looking ahead of ...” と後置修飾すると自然(な気がする)。

後読み=lookbehind

(?<=■) は “look behind of ■” すなわち「■の後ろを見る」。

  • 「半角大文字アルファベットが連続する 後ろ にあるfuga」は “fuga looking befind of [A-Z]+” と考えて (?<=[A-Z]+)fuga
  • こちらもやはり fuga と置いてから括弧で情報を付加するイメージ。
  • <= が矢印っぽくて「先」を連想させるのが罠。

否定形

否定形は =! にする。

否定先読み=negative lookahead

(?!■) は “look ahead of non-■” すなわち「■ではないものの前を見る」。

否定後読み=negative lookbehind

(?<!■) は “look behind of non-■” すなわち「■ではないものの後ろを見る」。


英語ネイティブは違和感なく覚えられるんですかね…。