正则表达式;或;返回一组Java

正则表达式;或;返回一组Java,java,regex,Java,Regex,如何仅返回找到匹配的组 我有一个正则表达式: ".*>(\\d+.*)\\s.*\\(.*</|>(\\d+.+)<" 只要表达式的第二部分匹配(或运算符后面的表达式),就会返回null。当次表达式(或之后的表达式)匹配时,如何返回匹配组?您需要使用捕获组: Pattern pattern = Pattern.compile("(regexToMatch1)|(regexToMatch2)"); ... read in stuff here ... Matcher ma

如何仅返回找到匹配的组

我有一个正则表达式:

".*>(\\d+.*)\\s.*\\(.*</|>(\\d+.+)<"

只要表达式的第二部分匹配(或运算符后面的表达式),就会返回null。当次表达式(或之后的表达式)匹配时,如何返回匹配组?

您需要使用捕获组:

Pattern pattern = Pattern.compile("(regexToMatch1)|(regexToMatch2)");
...
read in stuff here
...
Matcher matcher = pattern.matcher(yourString);
if (matcher.matches()) {
    String firstString  = matcher.group(1);
    String secondString = matcher.group(2);
}
然后扔掉你不想要的任何团体

这里有很好的例子:


等等,我想我不明白你在问什么。您的组匹配,但组为空?您只需要引用matcher.group(#)中的第二个组;打电话。

谢谢!我最终结束了这项工作:'如果(m.group(1)!=null){System.out.println(m.group(1));}或者{System.out.println(m.group(2));}'哦,那么只有一个应该匹配?在这种情况下,使用?操作员:“(第一组)?(第二组)。
Pattern pattern = Pattern.compile("(regexToMatch1)|(regexToMatch2)");
...
read in stuff here
...
Matcher matcher = pattern.matcher(yourString);
if (matcher.matches()) {
    String firstString  = matcher.group(1);
    String secondString = matcher.group(2);
}