我看到了这篇文章 什么是非捕获组?问号后跟着冒号(?:)代表什么意思?
我发现以下代码可能有效,但实际上并不行...
我有一个字符串"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());
但是上面的代码打印了整个字符串,而不仅仅是我想要的数字。
我看到了这篇文章 什么是非捕获组?问号后跟着冒号(?:)代表什么意思?
我发现以下代码可能有效,但实际上并不行...
我有一个字符串"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());
m.group()
指的是整个匹配。如果你只对匹配文本的一部分感兴趣,可以使用捕获组,例如Game No : ([0-9]*)
然后print(m.group(1))
。 - Aran-FeyGame No
在非捕获组中,并不意味着它不是匹配的一部分。如果你想要将其排除在匹配之外,你需要使用向后查找。 - Gerrit0"Game No : 432543254 \n"
,因为它没有考虑到最后一个数字和换行符之间可能有空格。此外,非捕获分组(?:Game No : )
是不必要的,你为什么要使用它呢? - user557597