我用一个简单的例子解释一下啊:
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做的比较多,嘿嘿。希望对您有用。
|