用于检索日志文件中前一行的正则表达式

Huu*_*uze 6 regex

我的日志文件包含以下内容:

2009-03-12T12:44:27+0000 something was logged
2009-03-12T12:45:36+0000 127.0.0.1 127.0.0.1 <auth.info> last message repeated 2 times
Run Code Online (Sandbox Code Playgroud)

我可以编写一个正则表达式来检索带有“最后一条消息重复...”语句的行,但是,如果不检索它前面的行,该行就毫无意义。

话虽这么说,有谁知道一个正则表达式可以让我在检测到“最后一条消息重复...”语句时检索这两行?

Qui*_*son 4

编辑为 2 组匹配正则表达式。您可以尝试一下:RegexLib

不太优化,但是:

([\r\n].*?)(?:=?\r|\n)(.*?(?:last message repeated).*)
Run Code Online (Sandbox Code Playgroud)

应该努力从这样的事情中得到结果:

2009-03-12T12:44:27+0000 something1 was logged
2009-03-12T12:44:27+0000 something2 was logged
2009-03-12T12:45:36+0000 127.0.0.1 127.0.0.1 <auth.info> last message repeated 2 times
2009-03-12T12:44:27+0000 something3 was logged
2009-03-12T12:44:27+0000 something4 was logged
2009-03-12T12:44:27+0000 something5 was logged
2009-03-12T12:45:36+0000 127.0.0.1 127.0.0.1 <auth.info> last message repeated 2 times
Run Code Online (Sandbox Code Playgroud)

导致:

Matches
First Match, First Group: 2009-03-12T12:44:27+0000 something2 was logged
First Match, Second Group: 2009-03-12T12:45:36+0000 127.0.0.1 127.0.0.1 <auth.info> last message repeated 2 times
Second Match, First Group: 2009-03-12T12:44:27+0000 something5 was logged 
Second Match, Second Group: 2009-03-12T12:45:36+0000 127.0.0.1 127.0.0.1 <auth.info> last message repeated 2 times
Run Code Online (Sandbox Code Playgroud)