我感兴趣的字符串如下所示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
最佳答案
您的正则表达式是错误的,因为([^\\w])
仅匹配一个非单词字符。您可能想要超过1个字元,因此(\\w+)
但是,您可以使用以下先行方式:
Pattern.compile("a(\\d*)(?=\\.)");