正则表达式在相邻行上找到相同的字符串

时间:2013-03-06 12:14:47

标签: regex

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

日志文件如下所示:

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: ]

我唯一想知道的是[档案发送:]出现在相邻的行上。这突出了程序中的错误。非常感谢任何帮助。

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

3 个答案:

答案 0 :(得分:0)

如果您想匹配显示[Dossier sent: ]的整行。然后你应该使用:

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

另一方面,如果你试图捕捉方括号之间的任何东西,那么你可以使用:

DEBUG\s([[].+?[]])

答案 1 :(得分:0)

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

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

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

^.*(\[Dossier sent: \]).*\n.*\1.*$

答案 2 :(得分:0)

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

(.*?\[Dossier sent: \].*?(?:\n|\Z)){2}