我正在尝试从日志文件中匹配字符串的最后一次出现。
[03/03/2019 09:16:36] Moving message 123456789 from NEW to PENDING
[03/03/2019 09:16:36] Retrieving file(s) of type DATAWAREHOUSE for 123456
[03/03/2019 09:16:36] collecting warehouse version 7.3.1 files for 123456...
[03/03/2019 09:16:37] Moving message 123456789 from NEW to PENDING
[03/03/2019 09:16:37] Retrieving file(s) of type DATAWAREHOUSE for 123456
[03/03/2019 09:16:37] collecting warehouse version 7.3.1 files for 123456...
[03/03/2019 09:16:38] Moving message 123456789 from NEW to PENDING
[03/03/2019 09:16:39] Retrieving file(s) of type DATAWAREHOUSE for 123456
[03/03/2019 09:16:40] collecting warehouse version 7.3.1 files for 123456...
以下是示例日志文件,其中有三个以下字符串的出现:
Moving message 123456789 from NEW to PENDING
我需要匹配最后一次出现的时间戳"[03/03/2019 09:16:38]"。当所有这些内容都在同一行时,使用贪婪匹配 (.*) 很好用。但是当它们存在于多行时就不起作用了。我没有尝试过多行(m),因为我不确定如何使用它。请有人帮我构建正则表达式查询以检索最后一次发生的时间戳吗? 示例:https://regex101.com/r/fnwPsB/1
(?s:.*\n)?\K\[\d{2}\/\d{2}\/\d{4} \d{2}:\d{2}:\d{2}\] Moving message 123456789 from NEW to PENDING
去匹配文本?请参考 https://regex101.com/r/fnwPsB/2 - Wiktor Stribiżew\d{2}\/\d{2}\/\d{4} \d{2}:\d{2}:\d{2}
模式应该用括号括起来进行捕获。 - Wiktor Stribiżew