• 正则表达式


     

     

    常用正则规范

    序号 规范 描述 序号 规范 描述
    1 \ 表示反斜线()字符 9 w 表示字母,数字,下划线
    2 制表符 10 W 表示非字母,数字,下划线
    3 换行 11 s 表示所有的空白字符(换行,空格等)
    4 [abc] 表示字符a,b或c 12 S 表示所有非空白字符
    5 [^abc] 表示除了a,b,c之外的任意字符 13 ^ 行开头
    6 [a-zA-Z0-9] 表示由字母.数字组成 14 $ 行的结尾
    7 d 表示数字 15 . 匹配除换行符之外的任意字符
    8 D 表示非数字      

    数量表示

    序号 规范 描述 序号 规范 描述
    1 X 必须出现一次 5 X{n} 必须出现n次
    2 X? 出现0次或1次 6 X{n,} 必须出现n次以上
    3 X* 可以出现0次,1次或者多次 7 X{n,m} 必须出现n到m次
    4 X+ 可以出现1次或者多次      

    1,认识正则表达式

    正则表达式可以方便的对数据进行匹配,还可以执行更加复杂的字符串验证,拆分,替换功能,它用于操作字符串数据

    正则表达式操作类是通过Pattern和Matcher两个类来完成的

    2,Pattern类和Matcher类

    这两个类都是定义在java.util.regex包中的,Pattern类的主要作用是进行正则规范的编写,而Matcher类主要是执行规范,验证一个字符串是否符合其规范

    Pattern类常用的方法123

    在Pattern类中如果要取得Pattern类实例的话,则必须使用compile()方法.

    package cn.regex;
    
    import java.util.regex.Pattern;
    
    public class RegexDemo {
        public static void main(String[] args) {
            String str = "1234567890";
            if(Pattern.compile("[0-9]+").matcher(str).matches()){
                System.out.println("是由数字组成");
            }else{
                System.out.println("不是数字组成");
            }
        }
    }

    如果要验证一个字符串是否符合规范的话,则可以使用Matcher类,该类中常用的方法

    45

    package cn.regex;
    
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    public class RegexDemo02 {
        public static void main(String[] args) {
            dateRegex();
            splitString();
        }
    
        public static void splitString() {
            String str = "AAA1111BBB33333CCC2222";
            String regex = "\d+";
            Pattern p = Pattern.compile(regex);
            String[] s = p.split(str);
            for(String s1 : s){
                System.out.print(s1);
            }
        }
    
        private static void dateRegex() {
            String str = "1990-11-11";
            String regex = "\d{4}-\d{2}-\d{2}";
            Pattern p = Pattern.compile(regex);
            Matcher m = p.matcher(str);
            if(m.matches())
                System.out.println("日期格式合法!");
            else
                System.out.println("日期格式不合法");
        }
    
    }

    3,String类对正则表达式的支持

    在String类中,有三个方法支持正则操作,以后一般使用的是String类中的方法,这样会比较方便

    123

    package cn.regex;
    
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    public class RegexDemo02 {
        public static void main(String[] args) {
            dateRegex();
            splitString();
        }
    
        public static void splitString() {
            String str = "AAA1111BBB33333CCC2222";
            String regex = "\d+";
            Pattern p = Pattern.compile(regex);
            String[] s = p.split(str);
            for(String s1 : s){
                System.out.print(s1);
            }
        }
    
        private static void dateRegex() {
            String str = "1990-11-11";
            String regex = "\d{4}-\d{2}-\d{2}";
            Pattern p = Pattern.compile(regex);
            Matcher m = p.matcher(str);
            if(m.matches())
                System.out.println("日期格式合法!");
            else
                System.out.println("日期格式不合法");
        }
    
    }

    4,正则表达式的作用

    (1)匹配 使用String中的mathches方法

    public static void demo_1() {
            String tel = "15061539693";
            String regex = "1[358][0-9]{9}";     //  \d和[0-9]效果一样
            boolean b = tel.matches(regex);
            System.out.println(b);
        }

    (2)切割  使用的是String中的split方法

    public static void demo2() {
            String str = "zhangsan     lisi     wangwu";
            String[] names = str.split(" +");//空格至少出现一次  和{1,}一样
            for (String string : names) {
                System.out.println(string);
            }
            String str2 = "zhangsanaaaaalisibbbbbwangwu";
            String[] name = str2.split("(.)\1+");
            for (String string2 : name) {
                System.out.println("2:"+string2);
            }
        }

    (.)表示一个捕获组,1表示使用到该组,+表示可以出现一次或者是多次

    (3)替换  String中replaceAll方法

    public static void demo3() {
            String str1 = "zhangsanAAAAlisiBBBBwangwu";
            String s = str1.replaceAll("(.)\1+", "$1");
            System.out.println(s);
            String str2 = "15061539693";
            String s2 = str2.replaceAll("(\d{3})\d{4}(\d{4})", "$1****$2");
            System.out.println(s2);
        }

    (4)获取
              Pattern p = Pattern.compile("a*b");  将正则的规则进行对象的封装
              Matcher m = p.matcher("aaaaab");  通过正则对象的matcher方法字符串相互关联,获取要对字符串进行操作的Matcher
              boolean b = m.matches(); 通过Matcher匹配器对象的方法对字符串进行操作

    public static void demo_4() {
            String str = "aa ada awa aa aaaaaa  aqa";
            String regex = "\b[a-z]{3}\b";  //  \b表示单词边界
            Pattern p = Pattern.compile(regex);
            Matcher m = p.matcher(str);
            while(m.find()){
                System.out.println(m.group());
            }        
        }
  • 相关阅读:
    微信小程序Rx 引入 调用合并的方法
    小程序 引入 es-canvas wx:for 单页面渲染多个for不同数据
    jquery操作数组对象
    Docker MySQL 8 主从配置
    CentOS 7 安装 LNMP
    lnmp1.6 配置负载均衡
    Nginx + PHP-FPM 参数优化、性能监视和问题排查
    「查缺补漏」巩固你的Nginx知识体系
    Android生成SHA1(证书指纹)
    android studio 如何把依赖导出成 jar
  • 原文地址:https://www.cnblogs.com/driverwjd/p/3873513.html
Copyright © 2020-2023  润新知