模式 - Matcher.group()vs Matcher.pattern()。pattern()

时间:2015-01-14 13:37:49

标签: java regex matcher

我对以下内容之间的区别感到有些困惑:

Matcher m;
m.group();

Matcher m;
m.pattern().pattern();

他们都从列表中返回正确的匹配,但我不明白两者之间的区别。

1 个答案:

答案 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