我有以下代码:
Pattern lPattern = Pattern.compile("^.*THREADINFO.*\\sJ9VMTHREAD:([0123456789xABCDEF]*).*")
Matcher lMatcher = lPattern.matcher("3XMTHREADINFO \"WebContainer : 14\" J9VMThread:0x0000000085046300, j9thread_t:0x00007FC39C10BDF0, java/lang/Thread:0x000000000B2E08E8, state:B, prio=5")
if(lMatcher.find())
println lMatcher.group(1)
我觉得它应该打印
0x0000000085046300
,但是没有。正如从在线正则表达式测试器here中可以看到的那样,此正则表达式非常适合从输入行获取0x0000000085046300
。但是,为什么这个Java代码无法打印相同的内容呢?我缺少什么? 最佳答案
您的正则表达式区分大小写,因此不会使用J9VMThread
,因为正则表达式中的所有字母均大写。您可以为正则表达式加上(?i)
前缀,或使用Pattern.compile(regex, Pattern.CASE_INSENSITIVE)
关闭区分大小写的功能。
关于java - 为什么我的Matcher.find()评估为false?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33015388/