正規表現と一致する重複する文字列
文字列「12345」に「.match(/d{3}/g)」を適用理想的には、「123」、「234」、および「345」の 3 つの一致を返す必要があります。ただし、取得される一致は 1 つ (「123」) のみです。
理由:
正規表現内のグローバル フラグ "g" は 3 桁を消費し、インデックスを次の位置に進めます。最初の試合後の順位。これは、正規表現が次の部分文字列と一致しようとするとき、インデックスはすでに位置 3 にあり、残りの重複する一致を効果的にスキップすることを意味します。
解決策: ゼロ幅アサーション
ゼロ幅アサーション、特にキャプチャ グループを使用した正の先読みを使用して、入力文字列内のすべての位置を一致させることができます。この手法には以下が含まれます。
JavaScript の例:
var re = /(?=(\d{3}))/g; console.log(Array.from('12345'.matchAll(re), x => x[1]));
以上が正規表現を使用して文字列内の重複する一致を見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。