代码如下:
Pattern p= Pattern.compile("(\\d{3,5})([a-z]{2})");
Matcher m = p.matcher("111-123aa-34345bb-234cc-111");
while(m.find())
{
System.out.println(m.group(1));
}
按照对于API的理解,其结果应该是
111
123
34345
234
111
但是实际结果却是
123
34345
234
为何??
Pattern p= Pattern.compile("(\\d{3,5})([a-z]{2})");
Matcher m = p.matcher("111-123aa-34345bb-234cc-111");
while(m.find())
{
System.out.println(m.group(1));
}
按照对于API的理解,其结果应该是
111
123
34345
234
111
但是实际结果却是
123
34345
234
为何??
这能匹配数字么
123aa
34345bb
234cc
但你使用了group(1),返回每个表达式是的第一组:
123
34345
234
当然,如果你用group(2),则返回:
aa
bb
cc
这样才是你想得到
111
123
34345
234
111
的效果。group(2)那部分或者有或者null
之前你写的Pattern p = Pattern.compile("(\\d{3,5})([a-z]{2})");
那是“3-5个数字后面必须跟着2个小写字母”,当然111那种“只有3个数字”,不能算匹配咯