上面讲了一些Java正则表达式的一些容易混淆的地方,接下来还有几个实例跟大家分享一下

字符串切割

demo1

String str = "zhangsan,lisi,wangwu";String reg = ",";//注意这里可能会容易出错,当然这个demo可以直接写','String[] arr = str.split(reg);

demo2

String str = "zhangsan lisi  wangwu";String reg = " +";//这里表示有至少一个空格String[] arr = str.split(reg);

demo3

String str = "zhangsan.lisi.wangwu";String reg = "\\.";//注意,这里的.必须要转义,反斜杠在字符串里面同样需要转义,所以出现了双//斜杠String[] arr = str.split(reg);

demo4

String str = "c:\\test\\test";String reg = "\\\\";//同理上面,每个反斜杠都需要转义所以出现了四个反斜杠String[] arr = str.split(reg);

demo5

String str = "zhangsannnlisiiiiwangwu";String reg = "(.)\\1";//表示叠词,如果出现多次,则(.)\\1+。其中1相当于给组编号,表示从1开//始。使用方式就是用\n的方式来获取String[] arr = str.split(reg);

正则表达式替换

demo1

String str = "zhan333gsannnlisiiiiw3333angwu";String reg = "\\d+"; //正常替换即可String[] arr = str.replaceAll(reg,"#");

demo2 替换成第一组的内容

String str = "zhan333gsannnlisiiiiw3333angwu";String reg = "(.)\\1"; String[] arr = str.replaceAll(reg,"$1");//结果是zhan3gsanlisiw3angwu,$表示拿的是第一组规则

正则表达式查找

demo1

String str = "zhan333gsannnlisiiiiw3333angwu";String reg = "[a-z]{3}";  Pattern p = Pattern.compile(reg);Matcher m = p.matcher(str);while(m.find()){   System.out.print(m.group());}

demo2

String str = "zhan333gsannnlisiiiiw3333angwu";String reg = "\\b[a-z]{3}\\b";   //注意,这里添加了单词边界了Pattern p = Pattern.compile(reg);Matcher m = p.matcher(str);while(m.find()){   System.out.print(m.group());}