第一步:show code
package com.test.generic;public class RegoxDemo2 { /** * 正则表达式对字符的常见操作。 * 1.匹配 * 其实是String类中的metches方法 * 2.切割 * 其实就是String类中的split方法。 * 3.替换 * 4.获取 */ public static void main(String[] args) { functionDemo_2(); } /** * 切割. */ public static void functionDemo_2(){ String str = "zhangsanttttxiaoqiangmmmmmmzhaoliu"; String [] names = str.split("(.)\\1+"); // 以 “ ”(空格)为切割标识符,+号表示空格出现一次或者多次 for (String name : names){ System.out.println(name); } }}
控制台输出 :
zhangsanxiaoqiangzhaoliu
二: 效果如上所示,长字符串
"zhangsanttttxiaoqiangmmmmmmzhaoliu"
中的 ttttt mmmmmm都被除去,真乃字符串切割的利器啊---
三、其实主要是这句代码:
String [] names = str.split("(.)\\1+");
. 代表匹配除换行符 \n之外的任何单字符。
(.) 代表一个表达式,或者说一个组,相当于java里面的一个函数。 \1代表后向引用(\\1代表),表示表达式中,从左往右数,第一个左括号对应的括号内的内容。\\1 在第二个位置上出现,表示第二个位置上的字符和第一个字符一样。+号代表出现一次或多次、PS:可能我对Regular理解不到位,所以描述不详细,还恳求各位指正。