正規表現のジレンマ: 複数行テキストの抽出
開発者は、JavaScript 正規表現を使用して HTML からテキストを抽出しようとして、予期しない障害に遭遇しました。複数行フラグ (m) は、複数行テキストのキャプチャには効果がないようです。
提供された正規表現パターンは、h1 タグで囲まれたテキストを抽出することを目的としていました:
var pattern = /<div>
ただし、HTML 文字列に改行が含まれている場合は、 (n)、結果は常に空でした。 m フラグが存在するかどうかに関係なく、改行を削除すると問題は解決しました。
解決策: Dotall 修飾子
原因は、dotall 修飾子が欠落していることにありました。 JavaScript。デフォルトでは、ドット (.) は改行を除く任意の文字に一致します。この制限を克服するには、文字クラスとその否定に関する回避策を使用できます。
[\s\S]
この文字クラスは、改行やその他の空白を含む任意の文字と一致します。正規表現に組み込むと、次の結果が得られます。
/<div>
DotAll フラグを使用した最新のソリューション
ES2018 の時点で、JavaScript は s (dotAll) フラグをサポートしています。このフラグは、ドットが改行と一致することを許可するように正規表現エンジンに明示的に指示し、次の回避策の必要性を排除します。
/<div>
以上がJavaScript Regex が「m」フラグを含む複数行テキストの抽出に失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。