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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 凝聚 中级黑马   /  2013-9-28 10:45  /  1484 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

正则表达式中按照叠词切割字符串,可以将规则封装一个组,用()完成,使用自己的组可以通过   \n  来获取 中的\n是怎么回事,社能具体解释一下。

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

2 个回复

倒序浏览
我用一个简单的例子解释一下啊:
String str = "diddjojgnjijiiifeeeejdkkkkls";
String regex = "(.)\\1";//定义规则:.代表任意字符()把.形成一个组,\\1代表重用(.)这个1号组,在此例中就表示任意出现过两次的字符。         
String[] arr = str.split(regex);
结果是:
di
jojgnjij
if

jd

ls
如果将规则定义为:String regex = "(.)\\1+";则代表匹配任意出现过一次以上的字符(即重复使用(.)这个一号组一次以上),那么结果就是:
di
jojgnjij
f
jd
ls
所以,在java中,为了让规则的结果被重用,可以将规则封装成一个组,用()完成,组的出现都有编号,在这里我只举了一个只分一个组的例子,也可以分多个组,如  ((())()) : 就有4组 , 编号是(1(2(3))(4)),也就是说判断组有多少个,就看多有多少个左括号, 而编码从左边开始 1,然后 2,然后 ....。而使用哪个组就用\n来获取,比如使用第二组的规则,那么就在整体的规则(分组)定义后面加上\\2,如果需要重复使用这个规则,可以用+或者用大括号等制定使用此规则的次数范围等等,您可以自己举例试一下。 其实我个人感觉的话,模式匹配perl的好用些。可能是平时文本处理用perl做的比较多,嘿嘿。希望对您有用。

评分

参与人数 2技术分 +1 黑马币 +2 收起 理由
凝聚 + 2 很给力!
乔兵 + 1

查看全部评分

回复 使用道具 举报
谢谢,讲述的非常清楚
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马