重複する文字列を正規表現と照合する場合、照合メソッドと正規表現のバッファリングがどのように機能するかを理解することが重要です。
デフォルトでは、match メソッドは正規表現内のグローバル フラグ (g) は、一致した文字を消費し、一致した部分文字列の直後の位置にインデックスを進めます。たとえば、正規表現 /d{3}/g は 3 桁のシーケンスに一致しますが、一致した文字を消費するため、一致結果は 1 つだけ返されます。
重複する文字列を照合するには、キャプチャ グループを使用した正の先読みであるゼロ幅アサーションを使用できます。このアサーションは、入力文字列内のすべての位置をテストし、一致が見つかった場合、キャプチャ グループは一致する部分文字列をキャプチャします。次に、無限ループを避けるために RegExp.lastIndex プロパティを手動で進めます。
プログラミング言語が matchAll メソッドをサポートしている場合は、それを使用してゼロ幅アサーションを実装し、重複する一致をすべて検索します。たとえば、JavaScript では、次のコードは matchAll を使用して、文字列「12345」内の重複する 3 桁の部分文字列をすべて検索します:
var re = /(?=(\d{3}))/g; console.log(Array.from('12345'.matchAll(re), x => x[1]));
以上が正規表現を使用して重複する文字列を照合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。