Java 7中名为捕获组的正则表达式支持

Java 7中名为捕获组的正则表达式支持,java,regex,java-7,Java,Regex,Java 7,因为Java7正则表达式API提供了对命名捕获组的支持。 该方法返回给定的命名捕获组捕获的输入子序列,但在API文档中没有可用的示例 在Java 7中指定和检索命名捕获组的正确语法是什么?命名捕获组的新语法是(?X),用于以“name”命名的匹配组X。下面的代码捕获正则表达式(\w+)(任何一组字母数字字符)。要命名此捕获组,必须添加表达式?在要捕获的正则表达式之前的括号内 Pattern compile = Pattern.compile("(?<teste>\\w+)"); Ma

因为Java7正则表达式API提供了对命名捕获组的支持。 该方法返回给定的命名捕获组捕获的输入子序列,但在API文档中没有可用的示例


在Java 7中指定和检索命名捕获组的正确语法是什么?

命名捕获组的新语法是
(?X)
,用于以“name”命名的匹配组X。下面的代码捕获正则表达式(\w+)(任何一组字母数字字符)。要命名此捕获组,必须添加表达式?在要捕获的正则表达式之前的括号内

Pattern compile = Pattern.compile("(?<teste>\\w+)");
Matcher matcher = compile.matcher("The first word is a match");
matcher.find();
String myNamedGroup= matcher.group("teste");
System.out.printf("This is yout named group: %s", myNamedGroup);
Pattern compile=Pattern.compile((?\\w+);
Matcher Matcher=compile.Matcher(“第一个单词是匹配的”);
matcher.find();
字符串myNamedGroup=matcher.group(“teste”);
System.out.printf(“这是您命名的组:%s”,myNamedGroup);
此代码返回并打印以下输出:

这是您的命名组:

指定命名捕获组 将以下正则表达式与单个捕获组一起用作示例
([Pp]模式)

下面是4个示例,介绍如何为上面的正则表达式指定

(?<Name>[Pp]attern)
(?<group1>[Pp]attern)
(?<name>[Pp]attern)
(?<NAME>[Pp]attern)
(?x)  (  ?<name>             [Pp] attern  )
(?x)  (  ?<  name  >         [Pp] attern  )
(?x)  (  ?<  n  a m    e  >  [Pp] attern  )
组名区分大小写,因此在引用组名时必须指定确切的组名(请参见下文)

在正则表达式中反向引用命名的捕获组 正则表达式中的To(对应于上面的4个示例):

如上所述,在所有4个示例中,可以使用替换字符串中的
$1
引用捕获组的内容

模式中的命名捕获组 使用
(?[Pp]模式)
作为本节的示例

Oracle对
注释
模式(嵌入式标志
(?x)
)的实现将以下示例解析为与上面的正则表达式相同:

(?<Name>[Pp]attern)
(?<group1>[Pp]attern)
(?<name>[Pp]attern)
(?<NAME>[Pp]attern)
(?x)  (  ?<name>             [Pp] attern  )
(?x)  (  ?<  name  >         [Pp] attern  )
(?x)  (  ?<  n  a m    e  >  [Pp] attern  )
(?x)(?[Pp]模式)
(?x)(?[Pp]模式)
(?x)(?[Pp]模式)
除了
(?x)  (  ?<name>             [Pp] attern  )
(?x)  (  ?<  name  >         [Pp] attern  )
(?x)  (  ?<  n  a m    e  >  [Pp] attern  )