文字列内で出現するパターンを、それらの出現が互いに重なっている場合でも、すべて検索する必要があるとします。たとえば、文字列「nnnn」が与えられた場合、次の一致を識別したいとします:
<code>nn nnn nnn</code>
正規表現は本質的にこの種の重複マッチング用に設計されたものではありませんが、考えられる解決策がいくつかあります。
1 つのアプローチには、(?<=...) として示される前方後読みアサーションの使用が含まれます
より直接的で直観的な方法は、前方先読みアサーション (?=nn)n を使用することです。このパターンは、現在の「n」文字の後に「nn」が存在するかを検索し、各「nn」シーケンスの先頭で一致します。
もう 1 つのアプローチは、前方参照と括弧のキャプチャを組み合わせることです: (n)(?=(n))。この式は、group(1) の最初の「n」と group(2) の 2 番目の「n」を取得するため、複雑なパターンを照合するための柔軟性が高まります。
これらの手法を使用すると、正規表現の通常の目的から逸脱する場合でも、正規表現パターン内の重複する一致を効率的に見つけることができます。
以上が文字列内で重複する正規表現の一致を見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。