使用(jdk 1.6),应用于主题字符串java.util.regex
的正则表达式仅捕获而不捕获(模式),因为它应该,给定以下代码:201210(\d{5,5})Test
20121000002Test
group(0)
group(1)
00002
Pattern p1 = Pattern.compile("201210(\\d{5,5})Test");
Matcher m1 = p1.matcher("20121000002Test");
if(m1.find()){
for(int i = 1; i<m1.groupCount(); i++){
System.out.println("number = "+m1.group(i));
}
}
奇怪的是,另一个类似的正则表达式(例如201210(\d{5,5})Test(\d{1,10})
应用于主题字符串)20121000002Test0000000099
捕获了组 0 和 1,但没有捕获组 2。
相反,通过使用 JavaScript 的 RegExp 对象,应用于完全相同的主题字符串的完全相同的正则表达式可以捕获所有组,正如人们所期望的那样。我使用这些在线测试仪自己检查并重新检查了这个事实:
我在这里做错了吗?还是 Java 的正则表达式库真的很烂?