我对以下内容之间的区别感到有些困惑:
Matcher m;
m.group();
和
Matcher m;
m.pattern().pattern();
他们都从列表中返回正确的匹配,但我不明白两者之间的区别。
答案 0 :(得分:1)
完全不同的事情。
Matcher.pattern().pattern()
会根据输入文字返回String
已初始化此Pattern
的{{1}}表示。Matcher
返回主群组匹配器(索引0)如果给定Matcher.group()
与给定文本匹配 Pattern
将抛出Matcher.group()
,即如果未包含在IllegalStateException
布尔条件中。
matcher.find()
重载允许您为Matcher.group(int i)
(基于1)中定义的显式组指定组索引,按其层次结构顺序(带括号)。
如果您的Pattern
中未定义索引组,那么这些重载将抛出IndexOutOfBoundException
。
示例强>
Pattern
<强>输出强>
Pattern p = Pattern.compile(".+");
String input = "blah";
Matcher m = p.matcher(input);
if (m.find()) {
System.out.println(m.group());
System.out.println(m.pattern().pattern());
}
更多强>
API here。