我正在寻找匹配[ERROR]但不是匹配的正则表达式[ERROR].*Internal Error.我不是很擅长正则表达式.但我试过这个并没有用: -
\[ERROR\].*(?!.*[Ii]nternal [Ee]rror).
Run Code Online (Sandbox Code Playgroud)
有什么建议?
反对[ERROR] Internal Error,您的模式匹配如下:
+------------------------ pos 0, len 7 "[ERROR]"
| +------------------- pos 7, len 15 " Internal Error"
| | +----- pos 22, len 0 ""
| | |
___|___ | ___________|____________
/ \/\/ \
\[ERROR\].*(?!.*[Ii]nternal [Ee]rror)
Run Code Online (Sandbox Code Playgroud)
你需要确保Internal Error不会在之后的任何位置开始[ERROR].
/\[ERROR\](?:(?![Ii]nternal [Ee]rror).)*\z/s
Run Code Online (Sandbox Code Playgroud)
(?:(?!STRING).)*就是STRING因为[^CHAR]*是CHAR
也就是说,\z允许您将以上内容简化为以下内容:
/\[ERROR\](?!.*[Ii]nternal [Ee]rror)/s
Run Code Online (Sandbox Code Playgroud)