首页 > 解决方案 > 对命名组使用 OR 运算符

问题描述

在正则表达式 java 中,我们可以使用这样的命名组(?<group_name>pattern)。它还支持这样的 OR 运算符(pattern1|pattern2)。我可以使用命名组和 OR 运算符(pattern1)|(pattern2)吗?也就是说,如果组中的一个模式匹配,则结果为真。

谢谢!

标签: javaregex

解决方案


If you search for "name" in this page, you will find this:

Special constructs (named-capturing and non-capturing)

(?<name>X) X, as a named-capturing group

So yes you can use named groups:

Matcher m = Pattern.compile("(?<foo>a)|(?<bar>b)").matcher("a");
if (m.find()) {
    System.out.println(m.group("foo")); // a
    System.out.println(m.group("bar")); // null
}

推荐阅读