我正在寻找匹配[ERROR]
而不是[ERROR].*Internal Error
的正则表达式。我不是很擅长正则表达式。但我试过这个并没有用: -
\[ERROR\].*(?!.*[Ii]nternal [Ee]rror).
有什么建议吗?
答案 0 :(得分:5)
对[ERROR] Internal Error
,您的模式匹配如下:
+------------------------ pos 0, len 7 "[ERROR]"
| +------------------- pos 7, len 15 " Internal Error"
| | +----- pos 22, len 0 ""
| | |
___|___ | ___________|____________
/ \/\/ \
\[ERROR\].*(?!.*[Ii]nternal [Ee]rror)
您需要确保Internal Error
之后的任何位置都无法[ERROR]
开始。
/\[ERROR\](?:(?![Ii]nternal [Ee]rror).)*\z/s
(?:(?!STRING).)*
是STRING
,[^CHAR]*
是CHAR
也就是说,\z
允许您将上述内容简化为以下内容:
/\[ERROR\](?!.*[Ii]nternal [Ee]rror)/s
答案 1 :(得分:2)
if ( ($a =~ /\[ERROR\]/) && ($a !~ /[Ii]nternal [Ee]rror/)) {
#do your stuff
}
答案 2 :(得分:-1)
(\[ERROR\])(?:.(?![Ii]nternal [Ee]rror))+.