Regex 排除捕获组中包含字符串的行
日志包含以下内容:Regex 排除捕获组中包含字符串的行,regex,Regex,日志包含以下内容: 2018-10-31 14:14:39; dcv0000088; 192.168.48.200; Variable Bindings vmwVpxdNewStatus:= Green vmwVpxdObjValue:= alarm.FanHealthAlarm - Event: Hardware Health Changed (3131155); --ENDOFTRAP-- 2018-10-31 10:41:49; sb02; 192.168.41
2018-10-31 14:14:39; dcv0000088; 192.168.48.200;
Variable Bindings
vmwVpxdNewStatus:= Green
vmwVpxdObjValue:= alarm.FanHealthAlarm - Event: Hardware Health Changed (3131155);
--ENDOFTRAP--
2018-10-31 10:41:49; sb02; 192.168.41.252;
Variable Bindings
sysUpTime:= 2 days 20 hours 18 minutes 24.23 seconds (24590423)
snmpTrapOID:= FSC-RTP-MIB:iandcAdmin.55.1.3.4.5 (1.3.6.1.4.1.4329.2.55.1.3.4.5)
iandcAdmin.55.1.1.3.0:= SIP Server not running
iandcAdmin.55.1.1.7.0:= SIP Server;
--ENDOFTRAP--
我想捕获变量绑定之后和之前的所有文本代码>但从捕获中排除包含<代码>系统正常运行时间..
的行。
我使用正则表达式:
Variable\sBindings\s+(?P<varBind>[^;]+(?!sysUpTime\:=.*))
varBind=
vmwVpxdNewStatus:= Green
vmwVpxdObjValue:= alarm.FanHealthAlarm - Event: Hardware Health Changed (3131155)
snmpTrapOID:= FSC-RTP-MIB:iandcAdmin.55.1.3.4.5 (1.3.6.1.4.1.4329.2.55.1.3.4.5)
iandcAdmin.55.1.1.3.0:= SIP Server not running
iandcAdmin.55.1.1.7.0:= SIP Server
请告知。谢谢。您可以创建一个可选(非捕获)组,该组将匹配sysUpTime
行(如果有),确保它不会包含在后续的varBind
组中:
Variable\sBindings\s+(?:sysUpTime.+\s+)?(?P<varBind>[^;]+)
^^^^^^^^^^^^^^^^^^^
Variable\sBindings\s+(?:sysUpTime.+\s+)(?P[^;]+)
^^^^^^^^^^^^^^^^^^^
如果sysUpTime
可以出现在变量绑定之后的第一行以外的地方,请注意任何组(或完全匹配)必须包含输入中的连续字符-如果没有其他方法,例如捕获初始子字符串,则不可能省略其中的一部分,匹配sysUpTime
行,然后捕获后面的子字符串。谢谢,我看到它在regex101上正常工作。但当我在Splunk上使用它时,它似乎不起作用。也许我需要找点别的。。