引用符で囲まれていないインスタンスの一致
前の質問では、引用符内のテキストを除外しながら、正規表現のすべての出現を一致させることが提案されました。実現不可能です。ただし、この制限は、複雑だが効果的な正規表現を使用することで克服できます。
この正規表現の重要な点は、部分文字列の前に偶数の引用符がある場合、その部分文字列が引用符の外側にあることを観察することです。これは、次の先読みアサーションとして表すことができます。
(?=([^"]*"[^"]*")*[^"]*$)
このアサーションにより、前のテキストに偶数の引用符が含まれ、その後に現在の部分文字列が続くことが保証されます。
エスケープされた引用符を除外するには、バックスラッシュも考慮する必要があります。正規表現は少し複雑になります:
\+(?=([^"\]*(\.|"([^"\]*\.)*[^"\]*"))*[^"]*$)
この正規表現は、まず引用符以外の文字 (S) を超えて進みます。バックスラッシュまたは引用符に遭遇すると、次の文字 (バックスラッシュの場合) を無視するか、そうでない場合はエスケープされていない次の引用符に進みます。
この正規表現はやや複雑ですが、効果的にすべてのインスタンスに一致します。正規表現が引用符で囲まれていないため、JavaScript の Split() メソッドと replace() メソッドで望ましい結果が得られます。
以上がJavaScript で引用符の外側にある正規表現インスタンスを照合する方法: 包括的なガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。