正規表現を使用した重複する文字列の一致
グローバル フラグ (/g) を指定した正規表現を使用して文字列を一致させる場合、次のようにすることができます。重複する一致が期待どおりに返されない場合があります。たとえば、文字列 "12345" では、/d{3}/g を使用して一致させると、["123", "234", "345"] ではなく "123" のみが一致します。
理由この動作は、グローバル フラグと一致する正規表現の性質に基づいているためです。正規表現エンジンは、一致した部分文字列を読み取って使用し、そのインデックスを一致の直後の位置に進めます。この場合、「123」と一致した後、インデックスは位置 4 に移動し、その後の一致には「45」だけが残ります。
重複一致のテクニック
を実現するには一致が重複している場合は、いくつかのアプローチが可能です採用:
ゼロ幅アサーション:
例 (matchAll を使用した JavaScript) :
const re = /(?=(\d{3}))/g; console.log(Array.from('12345'.matchAll(re), x => x[1]));
このコードは、肯定的な先読みを使用してすべてをテストします連続する 3 桁の数字に一致する文字列内の位置。結果は、["123"、"234"、"345"] を含む、一致した部分文字列の配列です。
追加の考慮事項:
以上が正規表現とグローバル フラグを使用して重複する一致を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。