A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 臧盼 中级黑马   /  2012-12-17 18:11  /  1148 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

谁能帮我分析下find()方法,group()方法,group(int i)方法的用处。
代码片段如下:
Pattern p = Pattern.compile("(.{3,10}?)([0-9])");
String s = "aaaa5bbbb68";
Matcher m = p.matcher(s);
while(m.find())
{
p(m.group(1));
}
输出为:
aaaa
bbbb
结果为什么是这样呢?m.group(1)不是就和(.{3,10}?)匹配吗,
打印结果不应该是下面的结果吗?
aaa
a5b
bbb

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 神马都是浮云

查看全部评分

1 个回复

倒序浏览
Pattern p = Pattern.compile("(.{3,10}?)([0-9])");
String s = "aaaa5bbbb68";
Matcher m = p.matcher(s);
while(m.find())//这里是拿着你的正则表达式"(.{3,10}?)([0-9])"去匹配的,符合的结果有"aaaa5"和“bbbb6”
{
p(m.group(1));//而这里你是获取正则表达式里面的第一组序列。也就是(.{3,10}?)这部分内容,当然就是“aaaa”和“bbbb”了,注意你这个表达式
                     //表达是任意字符重复出现3到10次之间的意思,不是只有三次,条件满足就会匹配下去,直接条件不满足。
}

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马