《黑马程序员》 正则的匹配 切割 替换 获取的操作演示

前端之家收集整理的这篇文章主要介绍了《黑马程序员》 正则的匹配 切割 替换 获取的操作演示前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
------- android培训java培训、期待与您交流! ----------
package cn.itcast.p5.regex;
public class RegexDemo5 {
 /**
  * @param args
  */
 /**
  * 正则的常见操作:
  *   正则表达式对字符串的常见操作:
  *     1,匹配
  *       其实就是使用String类中的matches方法
  *     2,切割
  *       其实就是使用String类中的split方法
  *     3,替换
  *        其实就是使用String类中的replaceAll方法
  *     4,获取
  */
 public static void main(String[] args) {
//  reflexDemo();
//  regexDemo_1();
//  regexDemo_2();
//   regexDemo_3();
//   regexDemo_4();
   regexDemo_5();
 }
 /**
  * 演示替换
  * */
 private static void regexDemo_5() {
  //演示1,替换www
  //  String str="www.baidu.com";
//  String str2=str.replaceAll("w+","bbs");
  //演示2,替换ttttt,mmmmmmmmmm为.
//  String str="sinammmmmcomuuuuuuu";
//  String str2=str.replaceAll("(.)\\1+",".");
  //演示3,//  String str="张明mmm李梦ttttt湖北qqqqqq上海";
//  String str2=str.replaceAll("(.)\\1+","|");
//  //张明|李梦|湖北|上海
  //演示4,使用组切割,并且使用每个组的第一个字符做为分割标记
//  String str="张明mmm李梦ttttt湖北qqqqqq上海";
//  String str2=str.replaceAll("(.)\\1+","$1");
  //张明m李梦t湖北q上海  
  
  //对电话号码的替换
  String tel="15800001111";
  String tel2=tel.replaceAll("(\\d{3})\\d{4}(\\d{4})","$1****$2");
  //158****1111
  
  //把上面的网址做成这样的效果
  String str="wwwqqqqbaidujjjjjjjjjcom";
  String url=str.replaceAll("([a-z]{3})(.)\\2+","$1.");
  //www.baidu.com
  System.out.println(url);
 }
 /**
  * 演示切割
  *  
  *   组:((A)(B)(C))
  * */
 private static void regexDemo_4() {
  String str="xiaoqiangmmmmshichuaneeeeeehefeiaaaaaawangbocccccccclimengla";
  //使用组的方法:
  String [] names=str.split("(.)\\1+");  
  for(String name:names){
   System.out.println(name);
  }
 }
 /**
  * 演示切割
  *  
  *   组:((A)(B)(C))
  * */
 private static void regexDemo_3() {
  //所有的名字都是以空格隔开
// A  String str="xiaoqiang shichuan hefei wangbo limengla";
  //使用一个空格进行切割
//A  String [] names=str.split(" ");
  // B 所有的名称都是以一个或多个空格隔开
//  String str="xiaoqiang    shichuan    hefei       wangbo              limengla";
  // B 使用正则中的空格+即空格出现一次或多次时,当条件满足了。我们就可以进行切割
//  String [] names=str.split(" + ");
   //C 所有名称都是以.隔开
//  String str="xiaoqiang.shichuan. hefei.wangbo.limengla";
  //C 我们使用正则来进行分割:\\.使用了转义字符
//  String [] names=str.split("\\.");   //\\.的含义,它不是代表任意字符吗?
  //D  使用一个或多个特殊符号来隔开 
  String str="xiaoqiangmmmmshichuaneeeeeehefeiaaaaaawangbocccccccclimengla";
 // D  使用如下进行切割:[^a-zA-Z\\d]+  即特殊符号出现一次或多次
//  String [] names=str.split("[^a-zA-Z\\d]+");   //\d表示0-9的数字,在字符串使用的时候需要使用\来进行转义所以就成了\\d
//  String [] names=str.split("[^a-zA-Z0-9]+");   //和上面的方法等效
  //使用组的方法:
  String [] names=str.split("(.)\\1+");   //和上面的方法等效
  for(String name:names){
   System.out.println(name);
  }
 }
 /*
  * 演示匹配
  * */
 private static void regexDemo_2() {
  //1,匹配手机号码是否正确
  String str="13493611272";
  //一定要是1开头,第二位是3,5,8都可以,即 13x,15x,18x然后从第三位
  //开始,到最后一位,只要是0-9的数字就可以了,我们可以使用\d来替换0-9,//因为它代表的就是0-9的数字
  String regex="1[358]\\d{9}";     
  boolean b=str.matches(regex);
  System.out.println(b);
 }
 
 private static void regexDemo_1() {
  //1,18x然后从第三位
  //开始,到最后一位,只要是0-9的数字就可以了
  String regex="1[358][0-9]{9}";     
  boolean b=str.matches(regex);
  System.out.println(b);
 }
 private static void reflexDemo() {
  String str="103Qns";
//  String regex="[0-9]{3,6}";
  String regex="[a-zA-Z0-9]{3,6}";
  boolean b=str.matches(regex);
  System.out.println(b);
 }
}

猜你在找的正则表达式相关文章