ホームページ >ウェブフロントエンド >jsチュートリアル >正規表現を使用して重複する文字列を照合するにはどうすればよいですか?

正規表現を使用して重複する文字列を照合するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-07 15:43:16379ブラウズ

How Can I Match Overlapping Strings Using Regular Expressions?

重複する文字列を正規表現と照合する

重複する文字列を正規表現と照合する場合、照合メソッドと正規表現のバッファリングがどのように機能するかを理解することが重要です。

問題: 一致した文字の消費

デフォルトでは、match メソッドは正規表現内のグローバル フラグ (g) は、一致した文字を消費し、一致した部分文字列の直後の位置にインデックスを進めます。たとえば、正規表現 /d{3}/g は 3 桁のシーケンスに一致しますが、一致した文字を消費するため、一致結果は 1 つだけ返されます。

解決策: ゼロ幅アサーション

重複する文字列を照合するには、キャプチャ グループを使用した正の先読みであるゼロ幅アサーションを使用できます。このアサーションは、入力文字列内のすべての位置をテストし、一致が見つかった場合、キャプチャ グループは一致する部分文字列をキャプチャします。次に、無限ループを避けるために RegExp.lastIndex プロパティを手動で進めます。

「matchAll」の使用

プログラミング言語が matchAll メソッドをサポートしている場合は、それを使用してゼロ幅アサーションを実装し、重複する一致をすべて検索します。たとえば、JavaScript では、次のコードは matchAll を使用して、文字列「12345」内の重複する 3 桁の部分文字列をすべて検索します:

var re = /(?=(\d{3}))/g;
console.log(Array.from('12345'.matchAll(re), x => x[1]));

以上が正規表現を使用して重複する文字列を照合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。