Java--正则表达式--应用实例&常用类

  1. 应用实例:
    1. package com.model.regexp;
      
      import java.util.regex.Matcher;
      import java.util.regex.Pattern;
      
      /**
       * @Description:测试类
       * @Author: 张紫韩
       * @Crete 2021/8/19 20:39
       * 正则表达式应用实例
       */
      public class RegExpDemo05 {
          public static void main(String[] args) {
      
              String context="18348950824";
      //        匹配汉字
      //        String regExp="^[\u0391-\uffe5]$";
      //
      //        邮政编码:以1-9开头的六位数字
      //        String regExp="^[1-9]\\d{5}$";
      
      //        手机号:以18,15,13,14开头的11位数
      //        String regExp="^1[3|4|5|8]\\d{9}$";
      
      //        url:匹配url
              String regExp="^((http|https)://)([\\w-]+\\.)+([\\w-])+(\\/[\\w-?=&%.#]*)?$";
      
      
              Pattern pattern = Pattern.compile(regExp);
              Matcher matcher = pattern.matcher(context);
              while (matcher.find()){
                  System.out.println(matcher.group(0));
      
              }
          }
      
      }
  2. 常用类:
    1. package com.model.regexp;
      
      import java.util.regex.Matcher;
      import java.util.regex.Pattern;
      
      /**
       * @Description:测试类
       * @Author: 张紫韩
       * @Crete 2021/8/19 23:22
       *
       */
      public class RegExpDemo06 {
          public static void main(String[] args) {
      
      //       1. 演示Pattern.matchers()方法的使用,整体匹配,查看是否匹配成功
      //        只是返回是否匹配成功,不匹配截取返回子字符串
              String context="hello world!";
              String regExp="\\w";
      //
              boolean matches = Pattern.matches(regExp, context);
              System.out.println(matches);
      
      
      //       2.演示Matcher方法的使用:
              String context1="hello world!";
              String regExp1="\\w";
              Pattern pattern = Pattern.compile(regExp1);
              Matcher matcher = pattern.matcher(context1);
              while (matcher.find()){
                  System.out.println(matcher.group(0));
                  System.out.println(matcher.end());
      //            整体匹配,是否匹配成功
                  System.out.println(matcher.matches());
      
      
              }
      
      //        3.replaceAll() 方法的使用,替换
      //        如果 字符串中有 hello 就替换成 张紫韩
              String context2="hello world!";
              String regExp2="hello";
              Pattern pattern2 = Pattern.compile(regExp2);
              Matcher matcher2 = pattern2.matcher(context2);
              String replaceAll = matcher2.replaceAll("张紫韩");
              System.out.println(replaceAll);
      
      
          }
      }
  3. 反向引用

    1.  

       

    2. package com.model.regexp;
      
      import java.util.regex.Matcher;
      import java.util.regex.Pattern;
      
      /**
       * @Description:测试类
       * @Author: 张紫韩
       * @Crete 2021/8/22 8:44
       * 反向引用:  //1  //2
       */
      public class RegExpDemo07 {
          public static void main(String[] args) {
              String context="12345-111222333";
      //        String regExp="(\\d)(\\d)\\2\\1";
      
      //        连续三位数相等,(\\d)\\2{2}  (\\d)也算出现一个,\\2{2}:算是出现两次,一共三次
              String regExp="(\\d){5}-(\\d)\\2{2}(\\d)\\3{2}(\\d)\\4{2}";
      
              Pattern pattern = Pattern.compile(regExp);
              Matcher matcher = pattern.matcher(context);
              while (matcher.find()){
                  System.out.println(matcher.group(0));
              }
          }
      }
  4. 去重:

    1. package com.model.regexp;
      
      import java.util.regex.Matcher;
      import java.util.regex.Pattern;
      
      /**
       * @Description:测试类
       * @Author: 张紫韩
       * @Crete 2021/8/22 9:10
       * 去重案例
       */
      public class RegExpDemo08 {
          public static void main(String[] args) {
              String context="我....我要学...学学学学...编程Java!";
      
      //       1. 去掉所有的 .
              String regExp="\\.";
              Pattern pattern = Pattern.compile(regExp);
              Matcher matcher = pattern.matcher(context);
              while (matcher.find()){
                   context=matcher.replaceAll("");
              }
              System.out.println(context);
      
      //       2. 去掉所有重复的字
      //        (1)使用(.)\\1+
      //        (2)使用反向引用$1来替换匹配到的内容
      //        注意:因为正则表达式变化,所有需要充值matcher
              String regExp1="(.)\\1+";
      //        Pattern pattern1 = Pattern.compile(regExp1);
      //        Matcher matcher1 = pattern1.matcher(context);
      //        while (matcher1.find()){
      //            System.out.println(matcher1.group(0));
      //        }
      //        //使用外部引用$1,来替换匹配到的内容
      //        context=matcher1.replaceAll("$1");
      //        System.out.println(context);
      
      //        $1 相当于匹配到的字符中的第一分组的内容
              context=Pattern.compile(regExp1).matcher(context).replaceAll("$1");
      
              System.out.println(context);
          }
      }
  5. 正则表达式替换功能:

    1. package com.model.regexp;
      
      import java.util.regex.Pattern;
      
      /**
       * @Description:测试类
       * @Author: 张紫韩
       * @Crete 2021/8/22 11:23
       * 字符串常用的正则表达式功能
       */
      public class RegExpDemo09 {
          public static void main(String[] args) {
      
      //        1.替换功能,将jdk1.3和jdk1.4替换成jdk
              String context1="JDK1.3的and JDK1.4 我是张紫韩";
      //        context1=Pattern.compile("(JDK1.3|JDK1.4)").matcher(context1).replaceAll("JDK");
              context1=context1.replaceAll("(JDK1.3|JDK1.4)","jdk");
              System.out.println(context1);
      //        2.验证功能,验证是否是以183或是139开头的手机号
              String context="18348950824";
              System.out.println(context.matches("(183|139)\\d{8}"));
      
      
      //        3.分割功能,按照多个表示符进行分割
      
              String context2="a123b#c~d^e&f*g(h)i-j+k";
              String[] split = context2.split("\\d+|#|~|\\^|&|\\*|\\(|\\)|-|\\+");
              for (String s:split){
                  System.out.println(s);
              }
      
      
          }
      }
    2. package com.model.regexp;
      
      import java.util.regex.Matcher;
      import java.util.regex.Pattern;
      
      /**
       * @Description:测试类
       * @Author: 张紫韩
       * @Crete 2021/8/22 11:44
       * 课堂联系
       */
      public class RegExpDemo10 {
          public static void main(String[] args) {
      //        1.有是否是邮箱
              String context="171832195@qq.com";
              System.out.println(context.matches("^[\\w]+@([a-zA-Z]+[\\.])[a-zA-Z]+$"));
      
      //        2.验证是否是正数和负数
              String context1="-0.123";
              System.out.println(context1.matches("^[-+]?([1-9]\\d*|0)([\\.][\\d]+)?$"));
      
      
      //        3.验证是否是URL
      //        分成四组:1协议 2域名 3端口号 4文件名
              String context2="https://www.baidu.com:8080/acb/index.html";
              String regExp="^(http|https)://([a-zA-Z\\.]+):(\\d+)[/\\w]*/([\\w.]+)$";
      
              Matcher matcher = Pattern.compile(regExp).matcher(context2);
              while (matcher.find()){
                  System.out.println(matcher.group(0));
                  System.out.println(matcher.group(1));
                  System.out.println(matcher.group(2));
                  System.out.println(matcher.group(3));
                  System.out.println(matcher.group(4));
              }
              System.out.println(context2.matches("^(http|https)://([a-zA-Z\\.]+):(\\d+)[/\\w]*/([\\w.]+)$"));
          }
      }
  6. 正则表达式大全;

    1.  

    2.  

       

    3.  

    4.  

        
posted @ 2021-08-19 23:38  张紫韩  阅读(81)  评论(0编辑  收藏  举报