上面讲了一些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()); }
本文出自 “放肆Java” 博客,请务必保留此出处http://fun4java.blog.51cto.com/6609513/1661318
原文地址:http://fun4java.blog.51cto.com/6609513/1661318