day52-正则表达式03( 三 )


这样一句话 , 通过正则表达式将其修改成“我要学编程java!”
package li.regexp;import java.util.regex.Matcher;import java.util.regex.Pattern;//去重public class RegExp13 {public static void main(String[] args) {String content = "我.....我我要......学学学学.......编程java!";//1.去掉所有的 .Pattern pattern = Pattern.compile("\\.");Matcher matcher = pattern.matcher(content);content = matcher.replaceAll("");//用空串替换掉.System.out.println("去掉所有的\".\"=" + content);//2.去掉重复的字//思路://2.1使用(.)\\1+去匹配连续重复的字//2.2使用反向引用$1来替换匹配到的内容//--注意:这里的正则表达式匹配的是多个重复的字 , 但是捕获的内容是重复的字中的一个,即圆括号pattern = Pattern.compile("(.)\\1+");//分组的捕获内容记录到$1中matcher = pattern.matcher(content);//因为正则表达式改变了 , 需要重置 matcherwhile (matcher.find()) {System.out.println("找到=" + matcher.group(0));}//使用反向引用$1来替换匹配到的内容//注意:虽然上面的正则表达式是匹配到的连续重复的字 , 但是捕获的是圆括号里面的内容,所以捕获的组里面的字只有一个 , //因此使用replaceAll("$1")的意思是:用捕获到的单个字去替换匹配到的多个重复的字content = matcher.replaceAll("$1");System.out.println("去掉重复的字=" + content);//2.相当于:// content = Pattern.compile("(.)\\1+").matcher(content).replaceAll("$1");// System.out.println(content);}}

day52-正则表达式03

文章插图
5.8替换分割匹配5.8.1替换使用正则表达式替换字符串可以直接调用 public String replaceAll(String regex,String replacement)  , 它的第一个参数是正则表达式 , 第二个参数是要替换的字符串 。
给出一段文本:
/*2000年5月 , JDK1.3、JDK1.4和J2SE1.3相继发布 , 几周后其获得了Apple公司Mac OS X的工业标准的支持 。2001年9月24日 , J2EE1.3发布 。2002年2月26日 , J2SE1.4发布 。自此Java的计算能力有了大幅提升 。*/将这段文字中的 JDK1.3JDK1.4 统一替换成 JDK
package li.regexp;//替换public class RegExp14 {public static void main(String[] args) {String content = "2000年5月 , JDK1.3、JDK1.4和J2SE1.3相继发布 , 几周后其获得了" +"Apple公司Mac OS X的工业标准的支持 。2001年9月24日 , J2EE1.3发布 。2002" +"年2月26日 , J2SE1.4发布 。自此Java的计算能力有了大幅提升 。";//使用正则表达式 , 将JDK1.3/JDK1.4 统一替换成 JDKcontent = content.replaceAll("JDK1.[34]", "JDK");System.out.println(content);}}
day52-正则表达式03

文章插图
5.8.3判断String类 public boolean matches(String regex)
验证一个手机号码 , 要求必须是以138、139开头的
package li.regexp;//匹配public class RegExp14 {public static void main(String[] args) {//验证一个手机号码 , 要求必须是以138、139开头的十一位数字String content="13899988880";if (content.matches("13[89]\\d{8}")) {//matches是整体匹配 , 不用加定位符System.out.println("验证成功");}else {System.out.println("验证失败");}}}
day52-正则表达式03

文章插图
5.8.3分割String类 public String[] split(String regex)
例子
有如下字符串 , 要求按照#或者-或者~或者数字来分割
“hello#abc-jack12smith~北京”
package li.regexp;//分割public class RegExp14 {public static void main(String[] args) {//要求按照# 或者- 或者~ 或者数字 来分割String content = "hello#abc-jack12smith~北京";String[] split = content.split("#|-|~|\\d+");for (int i = 0; i < split.length; i++) {System.out.println(split[i]);}}}

经验总结扩展阅读