正则表达式:与包含和不包含匹配

时间:2016-08-26 17:29:01

标签: regex

我正在尝试解析一个日志文件,其中包含许多带有单词http的行,后跟引发异常的类和方法,如下所示:

ERROR

我正在尝试编写一个正则表达式,该表达式将匹配包含2016-08-18 19:38:17 ERROR [KUHOMNYXARCH] [ 47] [c43215c4-acfd-491b-b418-653b53195be3] [MultiFormatRoiStreamer.GetImageRoi] 2016-08-18 19:39:46 ERROR [KUHOMNYXARCH] [ 46] [10ba0a0e-0ede-4d0e-a582-d7e811bb7ade] [ExceptionHandlingBehavior.ProvideFault] 但不包含ERRORMultiFormatRoiStreamer.GetImageRoi的所有行。我尝试使用否定前瞻断言没有奏效:

ExceptionHandlingBehavior.ProvideFault

有关于此的任何想法吗?

1 个答案:

答案 0 :(得分:2)

您可以使用它来查找行

(?m)^.*?ERROR[^\S\r\n]+(?:(?!MultiFormatRoiStreamer\.GetImageRoi|ExceptionHandlingBehavior\.ProvideFault).)+$

它使用多行模式(?m)

扩展:

 (?m)
 ^ 
 .*? 
 ERROR [^\S\r\n]+ 
 (?:
      (?!
           MultiFormatRoiStreamer\.GetImageRoi
        |  ExceptionHandlingBehavior\.ProvideFault
      )
      . 
 )+
 $