import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegularTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
String s="aaa<bbbb>ssss<cccc>dddd<asdsa>sss";
Matcher m = Pattern.compile("<(\\w+)>").matcher(s);
while(m.find()){
//System.out.println(m.start(1));
//System.out.println(m.end(1));
System.out.println(m.group(1));
}
}
}
这里是匹配bbbb cccc asdsa
为什么System.out.println(m.group(1));改为System.out.println(m.group(2));
就出错
Exception in thread "main" java.lang.IndexOutOfBoundsException: No group 2
------解决方案--------------------
------解决方案--------------------
加上这一句
System.out.println(m.groupCount());
输出是1
就是说你的group(2)已经越界了~~
------解决方案--------------------
m.group()是一个得到的组合
------解决方案--------------------
你定几个捕获组,就能group调用几次
------解决方案--------------------
<(\\w+)>这个是group(0)
(\\w+) 这个是group(1)
再也没有了。
------解决方案--------------------
这里分了两个组,所以你用2肯定会是数组越界的
------解决方案--------------------
学习