上面讲了一些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());}