我看过这篇文章What is a non-capturing group? What does a question mark followed by a colon (?:) mean?
我认为以下内容可行,但不会......
我有一个字符串"Game No : 432543254 \n"
Pattern p = Pattern.compile("(?:Game No : )[0-9]*?(\n)");
Matcher m = p.matcher(curr);
m.find();
System.out.print(m.group());
但上面的代码打印整个字符串,而不仅仅是我想要的数字
答案 0 :(得分:2)
非捕获组不会捕获,但仍匹配字符串。此外,您的模式中的数字和换行符之间有一个空格,因此它不会匹配。
要获取数字,您可以在数字匹配模式周围使用捕获组,如下所示:
Pattern p = Pattern.compile("Game No : ([0-9]+)");
Matcher m = p.matcher(curr);
if (m.find()) {
System.out.print(m.group(1));
}
请参阅Java demo
或者,使用非正则表达式解决方案,只需与:
分开并获取结果数组的第二项并修剪它。