2. 肯定先読み
指定した正規表現が先にある位置にマッチします。メタ文字は(?=)です。
先読みや、戻り読みは、位置にマッチするのが、理解の難しいところです。例えば、検索対象がXYZであれば、下記の4つの位置があります。
- 行頭と文字Xの間
- 文字Xと文字Yの間
- 文字Yと文字Zの間
- 文字Zと行末の間
先読みや、戻り読みは、上記のような位置の中から条件を満たす位置を検索すると理解すればいいでしょう。下記がサンプルです。
aababb
a(?=b)

b(?=b)

.(?=b)

3. 否定先読み
指定した正規表現が先にない位置にマッチします。メタ文字は(?!)です。下記がサンプルです。
aababbaaa
a(?!b)

b(?!b)

.(?!b)

a(?!.*b)

4. 肯定戻り読み
指定した正規表現が後ろにある位置にマッチします。メタ文字は(?<=)です。下記がサンプルです。
aababbaaa
(?<=a)a

(?<=b)a

(?<=a)b

(?<=[ab])a

5. 否定戻り読み
指定した正規表現が後ろにない位置にマッチします。メタ文字は(?<!)です。下記がサンプルです。
aababbaaa
(?<!a)a

(?<!b)a

(?<!a)b

(?<![ab])a

