ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript で正規表現を効果的に使用して複数行のマッチングを行うにはどうすればよいですか?

JavaScript で正規表現を効果的に使用して複数行のマッチングを行うにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-03 05:34:02343ブラウズ

How to Effectively Use Regex in JavaScript for Multiline Matching?

JavaScript での複数行にわたる正規表現の利用

JavaScript では、複数行のマッチング用に設計されたはずの 'm' フラグがコンテンツのキャプチャに失敗します改行をまたいで。これを解決するには、より堅牢なソリューションが必要です。

重要なのは、'[sS]' または '[^]' を複数行のドットとして使用することです。これらのパターンは、改行を含む任意の文字と一致します。このアプローチは、複数行にわたるコンテンツの分散に関係なく、コンテンツを効果的にキャプチャします。

例:

var ss = "<pre class="brush:php;toolbar:false">aaaa\nbbb\nccc
ddd"; var arr = ss.match( /
[\s\S]*?<\/pre>/gm );
console.log(arr); // Outputs: `<pre class="brush:php;toolbar:false">aaaa\nbbb\nccc
`

より難解な代替案:

提供されたソリューションは効果的ですが、'[sS]' を '.*?' に置き換えることによって、それほど複雑ではないアプローチを実現できます。この量指定子は、任意の数の文字 (改行を含む) を貪欲に照合するため、より効率的で的を絞った照合が行われます。

var arr = ss.match( /<pre class="brush:php;toolbar:false">.*?<\/pre>/gm );
console.log(arr); // Outputs: `<pre class="brush:php;toolbar:false">aaaa\nbbb\nccc
`

ヒント:

  • は避けてください。 「*?」のような貪欲でない量指定子を使用することによる過度の貪欲さまたは ' ?'
  • ベンチマークは、「[^]」が他のメソッドと比較して優れたパフォーマンスを提供することを示しています。
  • 「[^]」は非推奨ですが、古い環境では依然として効果的なソリューションです。

以上がJavaScript で正規表現を効果的に使用して複数行のマッチングを行うにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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