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

正規表現を使用して文字列内の重複する一致を見つけるにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-06 05:19:10
オリジナル
949 人が閲覧しました

How Can I Use Regex to Find Overlapping Matches in a String?

正規表現と一致する重複する文字列

文字列「12345」に「.match(/d{3}/g)」を適用理想的には、「123」、「234」、および「345」の 3 つの一致を返す必要があります。ただし、取得される一致は 1 つ (「123」) のみです。

理由:

正規表現内のグローバル フラグ "g" は 3 桁を消費し、インデックスを次の位置に進めます。最初の試合後の順位。これは、正規表現が次の部分文字列と一致しようとするとき、インデックスはすでに位置 3 にあり、残りの重複する一致を効果的にスキップすることを意味します。

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

ゼロ幅アサーション、特にキャプチャ グループを使用した正の先読みを使用して、入力文字列内のすべての位置を一致させることができます。この手法には以下が含まれます。

  • 先読みアサーションを使用してすべての位置をテストします。
  • 無限ループを回避するために RegExp.lastIndex プロパティを手動で進めます。

JavaScript の例:

var re = /(?=(\d{3}))/g;
console.log(Array.from('12345'.matchAll(re), x => x[1]));
ログイン後にコピー

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート