Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个看起来像的正则表达式\D*(\d*).*。它的目的是获取它可以找到的第一个数字并将其存储在第一个捕获组中。但是,当我给它输入一个字符串时testing123,它不匹配它!这让我困惑了一段时间;为什么不匹配?
\D*(\d*).*
testing123
Java代码:
String s = "testing123" Pattern p = Pattern.compile("\\D*(\\d*).*"); Matcher m = p.matcher(s); //m did not match anything
我认为您Matcher错误地使用了该对象:调用
Matcher
if (m.find()) { System.out.println(m.group(1)); }
印刷123
123
(链接到ideone)。
你的表达是:
这表示:
除了任何语法问题外,这似乎是一个不必要的复杂化。要匹配一行上的数字,为什么不直接捕获数字呢?例如:
\d+
或者,如果您想确保在单词边界的末尾只有数字,例如:
\d+\b
与任何 PCRE 兼容的引擎都可以正常工作。在 Java 中,这始终将“123”放入group(0)而不需要捕获子表达式。
group(0)