我希望匹配日志消息,例如
19:43:09.469 [main] INFO o.g.s.logging.HashCodeConverterIT [1083962448] - message
并使用命名组提取[]
内的数字。 AFAIK
Pattern p = Pattern.compile("\\d\\d:\\d\\d:\\d\\d.\\d\\d\\d \\[main\\] INFO o.g.s.logging.HashCodeConverterIT \\[(?<id>[0-9]+)\\] - message")
应该提供一个模式,以便
p.matcher("19:43:09.469 [main] INFO o.g.s.logging.HashCodeConverterIT [1083962448] - message").group("id")
返回1083962448
。我确认正则表达式正在使用https://www.freeformatter.com/java-regex-tester.html,表明matches
是true
,第二组是我要提取的数字。但是,OpenJDK 8检索失败的原因是java.lang.IllegalStateException: No match found
用于访问组名和索引1
。