如何从正则表达式中获取匹配的组值

时间:2018-04-20 14:52:38

标签: java regex

我有以下Java代码。如果正则表达式匹配多个组,那么我只想要匹配组的值。

final String regex = "^(\\d{1,2}-\\d{1,2}-\\d{4})|(\\d{4}-\\d{1,2}-\\d{1,2})$";
final Pattern pattern = Pattern.compile(regex);
final Matcher matcher = pattern.matcher("1988-02-02");
if (matcher.find()) {
    // I want matching group value. In this case (\\d{4}-\\d{1,2}-\\d{1,2})
}

我们能以任何方式实现这一目标吗?

1 个答案:

答案 0 :(得分:0)

将两个组放在一个较大的组中,以便两个匹配包含在同一组括号中。

final String regex = "^((\\d{1,2}-\\d{1,2}-\\d{4})|(\\d{4}-\\d{1,2}-\\d{1,2}))$";
final Pattern pattern = Pattern.compile(regex);
final Matcher matcher = pattern.matcher("1988-02-02");
if (matcher.find()) {
    String match = matcher.group(1);
    ...
}

如果您不需要,可以删除内部括号。

final String regex = "^(\\d{1,2}-\\d{1,2}-\\d{4}|\\d{4}-\\d{1,2}-\\d{1,2})$";