北宸~
热爱世间万物,无偏爱,无例外~~

正则表达式


正则表达式简介:
    概述:
        就是正确的符合特定规则的表达式, 本质就是一个字符串, 一般是用来 校验或者匹配某些信息的.
        正则不独属于任何的语言, 目前市场上大多数的语言都兼容它.
    涉及到的成员方法:
        String类中的方法:
            public boolean matches(String regex);  判断字符串是否符合指定的(正则)格式, 符合: true, 不符合: false
            public String replaceAll(String regex, String newStr);  把符合正则规则的内容 用指定的字符串(newStr)来替代.
            ....
    正则规则分类:
      ①:单字符匹配
      .               表示任意的一个字符
      \.              表示一个普通的. 没有任何特殊含义
      []              匹配[]中列举的字符
      \d              匹配数字,即0-9
      \D              匹配非数字
      \s              匹配空白,即空格,tab键
      \S              匹配非空白
      \w              匹配单词字符
      \W              匹配非单词字符
      ②:数量匹配
      *               匹配前一个规则的字符出现0次或者无数次
      +               匹配前一个规则的字符出现1次或者无数次  
      ?               匹配前一个规则的字符出现0次或者1次  
      {m}             匹配前一个规则的字符出现m次
      {m,}            匹配前一个规则的字符出现最少m次  
      {m,n}           匹配前一个规则的字符出现m到n次
      ③:边界匹配
      ^               匹配字符串开头
      $               匹配字符串结尾 
      \b              匹配一个单词的边界
      \B              匹配非单词边界
      ③:分组匹配  
      |               匹配左右任意一个表达式
      ()              将括号中字符作为一个分组

  正则规则示例:
      a               就表示一个特殊的字符a
      .               表示任意的一个字符
      \.              表示一个普通的. 没有任何特殊含义.
      [abc]           表示必须是a,b,c这三个字符中的任意一个字符
      [^abc]          表示不是a,b,c这三个字符中的任意一个字符
      [a-zA-Z]        表示这里必须是一个任意的字母.
      [0-9]           表示这里必须是一个数字
      [a-zA-Z_0-9]    表示这里必须是数字, 字母或者是_, 它们统称为: 单词字符.
      \w              表示任意的一个单词字符, 等价于: [a-zA-Z_0-9]
      \d              表示任意的一个数字, 等价于: [0-9]
      ^               表示正则的开头
      $               表示正则的结尾
      x{n}            表示x字符恰好出现n次, 多一次少一次都不行.
      x{n,}           表示x字符至少出现n次, 至多无所谓
      x{n,m}          表示x字符至少出现n次, 至多出现m次, 左右都包.
      x?              表示x字符至少出现0次, 至多出现1次
      x*              表示x字符至少出现0次, 至多出现无数次
      x+              表示x字符至少出现1次, 至多出现无数次
    细节:
        1. 更多正则表达式的规则详见 Pattern类.
        2. 能用以上的规则, 看懂别人写的正则表达式即可.
    
    
      

public class Demo01 {
    public static void main(String[] args) {
        //需求1: 判断字符串是否以 abc任意一个字母开头.
        String s1 = "dyz";
        System.out.println(s1.matches("^[abc].*"));

        //需求2: 判断字符串是否以 数字结尾.
        String s2 = "abc0ab";
        System.out.println(s2.matches(".*[0-9]$"));
        System.out.println(s2.matches(".*\\d$"));
    
        //需求3: 判断字符串是否 有出现连续的3个字母
        String s3 = "ab1bcde2cd";
        System.out.println(s3.matches(".*[a-zA-Z]{3,}.*"));
    
        //需求4: 判断字符串是否是合法的手机号.
        /*
            手机号规则:
                1. 长度必须是11.
                2. 必须是纯数字.
                3. 首位数字必须是1
                4. 第2位数字必须是: 3,4,5,6,7,8,9
         */
        String phone = "11112345678";
        System.out.println(phone.matches("1[3-9]\\d{9}"));
    
        //需求5: 统计字符串中所有数字之和.
        String s5 = "a1b23cde521fg31efab6a3";
        String s6 = s5.replaceAll("[^\\d]+", " ").trim();
        // System.out.println(s);
        String[] arr = s6.split(" ");
        int num = 0;

        for (String s : arr) {
          if (!"".equals(s)) {
              // System.out.println(s);
              num += Integer.parseInt(s);
          }
        }
        System.out.println(num);
    }

}
posted on 2021-12-01 17:13  Agoni~~  阅读(73)  评论(0)    收藏  举报