Java--正则表达式--语法介绍

  1. 基本介绍:
    1.  
  2. 元字符:

    1. package com.model.regexp;
      
      import java.util.regex.Matcher;
      import java.util.regex.Pattern;
      
      /**
       * @Description:测试类
       * @Author: 张紫韩
       * @Crete 2021/8/19 15:05
       * 演示正则表达式语法
       */
      public class RegExpDemo02 {
          public static void main(String[] args) {
      //        \\ :转义号的使用
      //        .:匹配任意的一个字符
      //        \\.:表示匹配 . 字符
              String context="abc$(abc(123(";
              String regExp="\\(";
              Pattern pattern = Pattern.compile(regExp);
              Matcher matcher = pattern.matcher(context);
              while (matcher.find()){
                  System.out.println(matcher.group(0));
              }
          }
      
      }
  3. 字符匹配符:
  4. 字符匹配使用案例:
  5. 选择匹配符:

  6. 定位符:

    1. package com.model.regexp;
      
      import java.util.regex.Matcher;
      import java.util.regex.Pattern;
      
      /**
       * @Description:测试类
       * @Author: 张紫韩
       * @Crete 2021/8/19 15:42
       * 演示字符匹配符的使用
       */
      public class RegExpDemo03 {
          public static void main(String[] args) {
              String context="abc12s3456@#$dea fa";
      
      // 1.匹配字符
      
      //        String regExp="[a-z]{1,3}";
      //        String regExp="[^a-z]{1,3}";
      
      //        \\d: 1到3个 数字
      //        String regExp="\\d{1,3}";
      
      //        \\w: 1到3个 数字或字母,下划线
      //        String regExp="\\w{1,3}";
      //       \\W: 非数字字母,下划线
      //        String regExp="\\W{1,3}";
      
      //        \\D:非数字
      //        String regExp="\\D{1,3}";
      //
      //        String regExp="\\d?";
      //        String regExp="\\d+";
      //        String regExp="\\d*";
      
      //        不区分大小写 : (?i)
      //        String regExp="(?i)[a-z]";
      
      //       \\s:空白字符
      //        String regExp="\\s";
      
      //      . :任意一个字符,\n 除外
      //        String regExp=".";
      
      //   2。选择字符
      //        |:或,一次匹配多个
      //        String regExp="a|b|c";
      
      //   3.定位字符:
      
      //        ^ :以xx开头 ^[a-z] 以任意一个或多个字母开头
      //        $: 以xx位结尾 [a-z]+$:以任意一个或多个字母结尾
      //        String regExp="^[a-z]+.*[a-z]+$";
      
      //       a\\b : 匹配边界的a字符 {边界:被匹配的字符串的最后,也可以式空格的子字符串后面  }
      //        String regExp="a\\b";   
      
      //        a\\B:匹配非边界的a字符
              String regExp="a\\B";
      
      
              Pattern pattern = Pattern.compile(regExp);
      //        不区分大小写
      //        Pattern pattern = Pattern.compile(regExp,Pattern.CASE_INSENSITIVE);
      
              Matcher matcher = pattern.matcher(context);
              while (matcher.find()){
                  System.out.println(matcher.group(0));
              }
      
          }
      }
  7. 分组:

    1. package com.model.regexp;
      
      import java.util.regex.Matcher;
      import java.util.regex.Pattern;
      
      /**
       * @Description:测试类
       * @Author: 张紫韩
       * @Crete 2021/8/19 18:24
       * 演示正则表达式 :分组的使用
       */
      public class RegExpDemo04 {
          public static void main(String[] args) {
              String context="abc123def@#a";
      //        () ;分组 (\\w+)(\\d+)(.*)(\\w$),第一个括号是一组,第二个括号是二组,第三个括号是三组
      //        (?<> \\w+): 对分组进行取名,按照名字进行取分组内容
      
              String regExp="(?<one>\\w+)(\\d+)(.*)(\\w$)";
              Pattern pattern = Pattern.compile(regExp);
              Matcher matcher = pattern.matcher(context);
      
              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(matcher.group("one"));
              }
          }
      }
    2.  

    3.  

      package com.model.regexp;
      
      import java.util.regex.Matcher;
      import java.util.regex.Pattern;
      
      /**
       * @Description:测试类
       * @Author: 张紫韩
       * @Crete 2021/8/19 18:24
       * 演示正则表达式 :分组的使用
       */
      public class RegExpDemo04 {
          public static void main(String[] args) {
              String context="abc123def@#a张紫韩同学,张紫韩先生,张紫韩帅哥";
      //        () ;分组 (\\w+)(\\d+)(.*)(\\w$),第一个括号是一组,第二个括号是二组,第三个括号是三组
      //        (?<> \\w+): 对分组进行取名,按照名字进行取分组内容
      
      //        String regExp="(?<one>\\w+)(\\d+)(.*)(\\w$)";
      
      //        (?:xx|xx|xx) :非捕获分组  张紫韩同学|张紫韩先生|张紫韩帅哥 和 张紫韩(?:同学|先生|帅哥) 一样的效果
      //        String regExp="张紫韩同学|张紫韩先生|张紫韩帅哥";
      //        String regExp="张紫韩(?:同学|先生|帅哥)"; // == 张紫韩同学|张紫韩先生|张紫韩帅哥
      
      
      //        (?=xx|xx|xx)找到 张紫韩 这个关键字,但是要求是只是查找 张紫韩同学 和 张紫韩先生 中包含的张紫韩
      //        String regExp="张紫韩(?=同学|先生)";
      
      //        (?!xx|xx):取反,不会取张紫韩同学和张紫韩先生的 张紫韩,匹配其他的张张紫韩
              String regExp="张紫韩(?!同学|先生)";
      
              Pattern pattern = Pattern.compile(regExp);
              Matcher matcher = pattern.matcher(context);
      
      
      
              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(matcher.group("one"));
              }
          }
      }
  8.  

           

posted @ 2021-08-19 17:25  张紫韩  阅读(138)  评论(0编辑  收藏  举报