【发布时间】:2012-04-13 19:22:44
【问题描述】:
我在用 Java 编写正则表达式来解析日志文件中的信息时遇到了一些麻烦。
我有一个字符串,其中结构“timeinstant: some strings with any character”重复了 1 到 N 次。
timeinstant 的格式为“dd/mm/yyyy hh:MM:ss:MMMMMM”(M 为微秒)。
我想要做的是找到传入字符串中包含的最后一个 timeinstant 的微秒。
例如,用字符串
] 2012/04/02 16:28:51:861819: abcdefg : lwersdgsdg remote=xx.xxx.xx.xxx:yyy3f] accepted and identified as: John 2012/04/02 16:28:51:862987: pump: Received data on connection {John} [
我希望m.find() 指向"987: pump..."。为了得到这个,我使用了一个带有前瞻的正则表达式:
"(\\d{3}:)(?!\\d{4}/\\d{2}/\\d{2}\\s\\d{2}:\\d{2}:\\d{2}:\\d{6})"
但现在m.find() 指向819(包含在2012/04/02 16:28:51:861819 中)。
【问题讨论】:
标签: java regex lookahead negative-lookahead regex-lookarounds