System.out.println(matcher.group(1));
System.out.println(matcher.group());
我想知道上面两个代码有什么区别。我得到不同的输出。有人可以详细说明这一点吗?以下两者有什么区别?
感谢
System.out.println(matcher.group(1));
System.out.println(matcher.group());
我想知道上面两个代码有什么区别。我得到不同的输出。有人可以详细说明这一点吗?以下两者有什么区别?
感谢
到group()
调用给你匹配整个字符串,而group(1)
给你第一个括号中的“捕捉”组(或者更一般地,group(n)
会给你第n个捕获组,计数左/左括号,从1开始)。
因此,举例来说,如果你有一个输入字符串是这样的:
The quick brown fox
你对下面的正则表达式(不带引号)匹配:
"The (\\w+)"
然后group()
会给你“快速”和group(1)
会给你“快速”。
有关Java中所有这些正则表达式工作原理的更多详细信息,请参阅Java教程java.util.regex.Matcher
。
这个正则表达式缺少一些东西,你是不是指“(\\ w +)'”? (从技术上说,它不会匹配 - 'matches()',它会被发现 - 'find()') – 2010-03-11 10:14:43
已更新以添加反斜杠,并且您正确地说'matches()'与'find()' 。 – 2010-03-11 17:19:53
该API doc是一个非常好的地方先看看。
对于简单的示例,我得到了group()和group(1)完全相同的值:您能提供一个特定的表达式和输入字符串吗? – 2010-03-10 21:29:26