我有以下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})
}
我们能以任何方式实现这一目标吗?
答案 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})$";