我的正则表达式看起来像\D*(\d*).*
。它的意思是获取它能找到的第一个数字并将其存储在第一个捕获组中。但是,当我给它添加像testing123
这样的字符串时,它与它不匹配!这让我困惑了一段时间;为什么不匹配?
Java代码:
String s = "testing123"
Pattern p = Pattern.compile("\\D*(\\d*).*");
Matcher m = p.matcher(s);
//m did not match anything
答案 0 :(得分:5)
答案 1 :(得分:0)
你的表达是:
\ d *(\ d *)。*
这意味着:
除了任何语法问题,这似乎是一个不必要的复杂问题。要匹配一行中的数字,为什么不捕获数字呢?例如:
\d+
或者,如果您想确保在单词边界的末尾只有数字,例如:
\d+\b
可与任何兼容PCRE的引擎一起使用。在Java中,这始终将“123”放入group(0)
而不需要捕获子表达式。