0

我不太擅长正则表达式,但需要使用它来搜索数百个日志文件以找到特定的出现。过去我通常能够使用它们来查找单词或短语的所有出现,但这次我需要一些更复杂的东西(我认为)。

日志文件如下所示:

2013-03-05 14:57:58 DEBUG [Dossier returned: ]
2013-03-05 14:57:58 DEBUG [Dossier sent: ] htt
2013-03-05 14:57:59 DEBUG [Dossier returned: ]
2013-03-05 14:58:02 DEBUG [Dossier sent: ] htt
2013-03-05 14:58:49 DEBUG [Dossier sent: ] htt
2013-03-05 14:58:50 DEBUG [Dossier returned: ]
2013-03-05 14:58:50 DEBUG [Dossier sent: ] htt
2013-03-05 14:58:50 DEBUG [Dossier returned: ]

我想找到的唯一事件是 [Dossier sent: ] 出现在相邻行的位置。这突出了程序中的错误。将不胜感激任何帮助。

编辑:感谢您的指导。我正在使用 powershell 来解析文本文件。所以正则表达式在其中运行。

4

3 回答 3

0

如果要匹配[Dossier sent: ]出现的整行。然后你应该使用:

^.+?Dossier\ssent:.+?$

另一方面,如果您试图捕获方括号之间的任何内容,那么您可以使用:

DEBUG\s([[].+?[]])
于 2013-03-06T12:17:21.803 回答
0

根据您使用的语言,多行匹配可能会有所不同。你可以试试这个:

^.*\[Dossier sent: \].*\n.*\[Dossier sent: \].*$

或者我们可以使用反向引用来缩短它:

^.*(\[Dossier sent: \]).*\n.*\1.*$
于 2013-03-06T12:27:47.617 回答
0

使用多行模式,这对我有用:

(.*?\[Dossier sent: \].*?(?:\n|\Z)){2}
于 2013-03-07T15:35:58.003 回答