引用符がエスケープされている場合でも、引用符で囲まれた文字列以外の正規表現インスタンスを照合するにはどうすればよいですか?

DDD
リリース: 2024-10-28 00:02:01
オリジナル
880 人が閲覧しました

How to Match Regex Instances Outside of Quoted Strings, Even with Escaped Quotes?

引用符の外側のインスタンスの一致

前の仮定に反して、引用符で囲まれていない特定の正規表現のすべてのインスタンスと一致することが可能ですエスケープされた引用符も含めて、正規表現を使用した文字列の一部。

正規表現ソリューション

これを実現するには、各単語が正しいかどうかをチェックする先読みアサーションを利用します。引用符の外側。引用符の後に偶数の引用符がある場合に発生します。以下の正規表現はこのパターンをキャプチャしています:

\+(?=([^"]*"[^"]*")*[^"]*$)
ログイン後にコピー

エスケープされた引用符の処理

エスケープされた引用符を処理するには、バックスラッシュを無視して次のエスケープされていない引用符に進むように式を変更します。 :

\+(?=([^"\]*(\.|"([^"\]*\.)*[^"\]*"))*[^"]*$)
ログイン後にコピー

これにより、エスケープされた引用符が開始引用符としてカウントされなくなります。

JavaScript の .split() および .replace() の使用法

JavaScript の .split() および .replace() メソッドで使用するには、次のコードを使用できます:

const input = '+bar+baz"not+or\"+or+\"this+\"foo+bar+';
const replaced = input.replace(/\+(?=([^"\]*(\.|"([^"\]*\.)*[^"\]*"))*[^"]*$)/g, '#');
console.log(replaced); // "#bar#baz\"not+or\"+or+\"this+\"foo#bar#"
ログイン後にコピー

以上が引用符がエスケープされている場合でも、引用符で囲まれた文字列以外の正規表現インスタンスを照合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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