我感兴趣的字符串如下所示
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

最佳答案

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

但是,您可以使用以下先行方式:

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

10-05 21:15
查看更多