繁体   English   中英

非捕获组java正则表达式

[英]Non capturing group java regex

我看到这篇文章什么是非捕获组? 问号后跟冒号(?:)是什么意思?

我认为以下方法可行,但它不会......

我有一个字符串"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());

但上面的代码打印整个字符串,而不仅仅是我想要的数字

非捕获组不捕获 ,但仍匹配字符串。 此外,模式中的数字和换行符之间有一个空格,因此它不匹配。

要获取数字,您将在数字匹配模式周围使用捕获组,如下所示:

Pattern p = Pattern.compile("Game No : ([0-9]+)");
Matcher m = p.matcher(curr);
if (m.find()) {
    System.out.print(m.group(1));
}

请参阅Java演示

或者,使用非正则表达式解决方案,只需拆分:并获取结果数组的第二项并修剪它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM