【发布时间】:2018-06-14 23:46:42
【问题描述】:
我正在编写一个关于正则表达式的非常简单的示例代码,但无法使用 group。
正则表达式为:rowspan=([\\d]+)
输入字符串为:<td rowspan=66>x.x.x</td>
我正在在线正则表达式引擎上对其进行测试,显然可以捕获组66,请参见下面的快照:
基于javadoc,
组零表示整个模式,所以表达式 m.group(0) 是 相当于 m.group()。
所以我认为应该有两个组,第 0 组应该是rowspan=66,第 1 组应该是66。但是,我能从下面的代码中得到的只是前者。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String args[]){
String input = "<td rowspan=66>x.x.x</td> ";
String regex = "rowspan=([\\d]+)";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
if(matcher.find()){
for(int i = 0; i < matcher.groupCount(); i++){
System.out.println(matcher.group(i));
}
}
}
}
输出是:
rowspan=66
提前感谢您的帮助。
【问题讨论】:
-
我不认为这与上述问题完全相同。这种模式确实似乎包含组。
-
JavaDoc: "返回此匹配器模式中捕获组的数量。按约定,组零表示整个模式。不包括在此计数中。"
-
并且是 stackoverflow.com/q/12989917/85421 , stackoverflow.com/q/5716703/85421 的重复项,...(停止搜索,因为有人认为这不是重复项)