我对以下之间的区别有点困惑:
Matcher m;
m.group();
和
Matcher m;
m.pattern().pattern();
它们都从列表中返回正确的匹配项,但我不明白两者之间的区别。
最佳答案
完全不同的事情。
Matcher.pattern().pattern()
返回此Matcher
的Pattern
的String
表示形式> 已针对输入文本进行初始化。Matcher.group()
返回主组匹配器(索引 0)如果给定的Pattern
与给定的匹配文字
matcher.find()
中,Matcher.group()
将抛出 IllegalStateException
boolean 条件。
Matcher.group(int i)
重载让您可以为您在 Pattern
中定义的显式组(从 1 开始)在其层次结构中指定组索引出现顺序(带括号)。
如果您的Pattern
中未定义索引组,这些重载将抛出IndexOutOfBoundException
。
示例
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());
}
输出
blah
.+
更多
API here 。
关于java - 模式 - Matcher.group() 与 Matcher.pattern().pattern(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27944288/