非バックトラッキング先読みおよび後読み
肯定先読みおよび後読みでは、バックトラックは実行されません。つまり、それらの内容は、非バックトラッキング (?> )
グループの内容と同じように扱われます。
先読みと後読みは常にゼロ幅なので、バックトラッキングの動作が見られるのは、キャプチャ グループが肯定先読みおよび後読みの中に出現する場合に限られます。たとえば、(?=(a*))\1a
に一致する文字列が見つかることはありません。それは、先読みの中で定義されたグループ 1 により、存在する "a" がすべて処理された後で、\1a
がもう 1 つの "a" を必要とするからです。先読み式はバックトラックされないため、検索エンジンが "a" の数を少なくしてグループ 1 を再試行することはありません。
グループ化、先読み、および後読み構成体の詳細については、「グループ化構成体」を参照してください。