如何仅返回找到匹配的群组?
我有这个正则表达式:
".*>(\\d+.*)\\s.*\\(.*</|>(\\d+.+)<"
当我跑步时:
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(comparisonString);
if(m.find() == true){
System.out.println(m.group(1));
}
只要表达式的第二部分匹配(“OR”运算符后面的表达式),就返回null。每当第二个表达式(“OR”之后的表达式)匹配时,如何返回匹配组?
答案 0 :(得分: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);
}
然后扔掉你不想要的任何团体。
这里的好例子: http://javamex.com/tutorials/regular_expressions/capturing_groups.shtml
编辑:等等,我认为我不明白你在问什么。您的群组匹配,但群组为空?你只需要在matcher.group中引用第二组(#);调用