Regex 正则表达式负前瞻问题
我正在尝试根据消息筛选我们的特定Trap,但遇到了一些问题。我只需要删除包含字符串“陷阱来自”但不包含“mxalFaultCode”(按此顺序)的消息 目前,我正在使用以下工具:Regex 正则表达式负前瞻问题,regex,Regex,我正在尝试根据消息筛选我们的特定Trap,但遇到了一些问题。我只需要删除包含字符串“陷阱来自”但不包含“mxalFaultCode”(按此顺序)的消息 目前,我正在使用以下工具: .*(Attention|Warning|Critical)\s+[^\(]+\s+\([^\)]+\):\s+The\s+trap\s+is\s+received\s+from.*(?!mxalFaultCode) 这与文本相匹配: _blaa_The trap is received from_blaa_mxal
.*(Attention|Warning|Critical)\s+[^\(]+\s+\([^\)]+\):\s+The\s+trap\s+is\s+received\s+from.*(?!mxalFaultCode)
这与文本相匹配:
_blaa_The trap is received from_blaa_mxalFaultCode_blaa_
但是,更换
代码>与?=
也匹配,当然是代码>应该失败吗?将负片前瞻定位在*
之前:
ie更改:
...from.*(?!mxalFaultCode)
至(加上为空格添加术语):
您尝试的问题是,*
将在应用前瞻之前消耗“mxafaultcode”
您还可以通过使用更长的前瞻性来简化正则表达式。例如,如果只需要“陷阱”
就足够了,您可以编写以下代码:
...The trap(?!.*mxalFaultCode).*
这意味着“mxafaultcode”
可能不会出现在“陷阱”
之后的任何地方(而(?!mxafaultcode)
意味着“mxafaultcode”
可能会立即出现)。尝试^.*(注意|警告|严重)\s+[^\(]+\s+\([^)]+):\s+s+trap\s+是从(?*mxafaultcode)收到的.*
Edit:我把它拿回去了,看起来好像我拍错了!谢谢
...The trap(?!.*mxalFaultCode).*