正则表达式


正则表达式


正则表达式简介:
    概述:
        就是正确的符合特定规则的表达式, 本质就是一个字符串, 一般是用来 校验或者匹配某些信息的.
        正则不独属于任何的语言, 目前市场上大多数的语言都兼容它.
    涉及到的成员方法:
        String类中的方法:
            public boolean matches(String regex);  判断字符串是否符合指定的(正则)格式, 符合: true, 不符合: false
            public String replaceAll(String regex, String newStr);  把符合正则规则的内容 用指定的字符串(newStr)来替代.
            ....
    正则规则:
        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);
    }

}