java - 模式 - Matcher.group() 与 Matcher.pattern().pattern()

标签 java regex

我对以下之间的区别有点困惑:

Matcher m;
m.group();

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

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

最佳答案

完全不同的事情。

  • Matcher.pattern().pattern() 返回此 MatcherPatternString 表示形式> 已针对输入文本进行初始化。
  • 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/

相关文章:

javascript - 改进用于解析 YouTube/Vimeo URL 的正则表达式

java - clsStr 变量是 "clsStr = (*env)->NewGlobalRef(env,cls)"的全局变量是什么?

java - java中的初始值之后, volatile 映射可以为空吗?

java - 需要数组列表的索引号,通过给出元素字符串的特定文本

java - Spring Maven项目结构pom.xml

javascript - 正则表达式匹配具有不同数字和最小长度的数字

regex - R:使用strsplit和perl REGEX语法提取大写字母和特殊字符

ios - 如何检查 objective-c 中 pan 卡编辑文本的有效性?

c# - 转义右括号

java - 在 Java 中编辑字符串 boolean 值和整数的 ArrayList