我感兴趣的字符串类似于以下内容
a1.foo
,a2.bar
,a3.whatever
现在我需要检索号码。 所以我写了这段代码(用Java编写),认为它可行,但事实并非如此。 谁能让我知道我的模式有什么问题?
final String testInput = "a2.foo";
Pattern p = Pattern.compile("a(\\d*)\\.([^\\w])");
Matcher matcher = p.matcher(testInput);
if (matcher.find())
{
System.out.println("n = " + matcher.group(1));
}
else
{
System.out.println("NOT MATCHED");
}
这会打印NOT MATCHED
,而我预计会打印2
答案 0 :(得分:2)
您的正则表达式错误,因为([^\\w])
只匹配一个非单词字符。你可能想要超过1个单词的字符(\\w+)
但是你可以使用这个前瞻:
Pattern.compile("a(\\d*)(?=\\.)");