正则表达式匹配和检索一些令牌

时间:2014-03-24 20:55:26

标签: java regex

我感兴趣的字符串类似于以下内容 a1.fooa2.bara3.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

1 个答案:

答案 0 :(得分:2)

您的正则表达式错误,因为([^\\w])只匹配一个非单词字符。你可能想要超过1个单词的字符(\\w+)

但是你可以使用这个前瞻:

Pattern.compile("a(\\d*)(?=\\.)");