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上使用它时,它似乎不起作用。也许我需要找点别的。。