Apache ログを解析しようとしていますが、リファラーの正しい構文に問題があります。リファラーは文字列"
(二重引用符) であり、その\"
中にも含まれている可能性があるためです。
"([^"]*)"
文字列に a がある場合は機能しません\"
。
最初の二重引用符から始めて、二重引用符ではないすべての文字を取得するにはどうすればよい\"
ですか?
Apache ログを解析しようとしていますが、リファラーの正しい構文に問題があります。リファラーは文字列"
(二重引用符) であり、その\"
中にも含まれている可能性があるためです。
"([^"]*)"
文字列に a がある場合は機能しません\"
。
最初の二重引用符から始めて、二重引用符ではないすべての文字を取得するにはどうすればよい\"
ですか?
これを使用できます:
"((?:[^"]|\\")*)"
二重引用符またはスラッシュと二重引用符のペア以外の 0 個以上の任意の文字に一致し、すべて二重引用符で囲まれています。
たとえば、文字列に他のエスケープがあります"hello \\"
か? その場合、より一般的なアプローチが必要です。
"((?:\\.|[^"\\])*)"
これはどう?\
クロージング前にa を除外するための否定後読み"
"(.+?)(?<!\\)"
これは、間に任意の数のエスケープされた引用符がある 2 つの引用符に一致します。
"\([^"]\|\\"\)*"
まず、引用符を探します。次に、以下のゼロから無限を検索します。