正则表达式

一,概述,初体验,匹配规则

1,正则表达式

就是由一些特定的字符组成,代表的是一个规则

2.书写规则

作用:用来校验数据格式是否合法

 //1.字符类(只能匹配单个字符)
        System.out.println("a".matches("[abc]"));//[abc]只能匹配a,b,c
        System.out.println("a".matches("[^abc]"));//[^abc]不能是a,b,c
        System.out.println("a".matches("[a-zA-Z]"));//[a-zA-Z]只能是a-z,A-Z的字符
        System.out.println("a".matches("[a-z&&[^bc]]"));//a-z除了b,c
        System.out.println("ab".matches("[a-zA-Z0-9]"));//false 注意:以上带[内容]的规则都只能用于匹配单个字符
        //2.预定义字符(只能匹配单个字符) . \d \D \s \S \w \W
        System.out.println("徐".matches("."));//.可以匹配任何字符
        System.out.println("徐徐".matches("."));//false
        //  \在Java中有特殊意义,\n换行 \t代表一个缩进
        System.out.println("3".matches("\\d"));// \d:0-9
        System.out.println(" ".matches("\\s"));// \s:代表一个空白字符
        System.out.println(" ".matches("\\S"));// \s:代表一个非空白字符
        System.out.println(" ".matches("\\w"));// \w:[a-zA-Z0-9] \W就是非
        //3.数量词 ? * + {n} {n,} {n,n}
        System.out.println("a".matches("\\w?"));//?代表0次或1次
        System.out.println("a".matches("\\w*"));//?代表0次或多次
        System.out.println("a".matches("\\w{3}"));//{3}代表正好是三次
        System.out.println("a".matches("\\w{3,}"));//{3,}代表>=3次
        System.out.println("a".matches("\\w{3,9}"));//{3,9}代表>=3,<=9次
        //4.其他几个常用的符号:(?!)忽略大小写,或:| 分组:()
        System.out.println("abc".matches("(?!)abc"));
        System.out.println("ABC".matches("(?!)abc"));//true
        System.out.println("ABC".matches("a((?!)b)c"));//true

二,用于查找信息,用于搜索替换,分割内容

用于查找信息

作用:在一段文本中查找满足要求的内容

public static void method1(){
        String data="电话:18637829837"+
                "或者邮箱:boniu@itcaast.cn.";
        //1.定义爬取规则
        String regex="1[3-9]\\d{9}|(0\\d{2,7}-?[1-9]\\d{4,19})";
        //2.把正则表达式封装成一个Pattern对象
        Pattern pattern=Pattern.compile(regex);
        //3.通过pattern对象去获取查找内容的匹配对象
        Matcher matcher=pattern.matcher(data);
        //4.定义一个循环开始查找信息
        while (matcher.find()){
            String rs=matcher.group();//获取到了找到的内容
            System.out.println(rs);
        }
    }

用于搜索替换,分割内容

//1.public String replaceAll(String regex,String newStr),按照正则表达式匹配的内容进行替换
        //需求1:请把 古力娜扎82917迪丽热巴93272马儿扎哈,中间的中文字符替换成-
        String s1="古力娜扎82917迪丽热巴93272马儿扎哈";
        System.out.println(s1.replaceAll("\\w+", "-"));
        //需求2:某语言系统,收到一个口吃的人说的“我我我我喜欢编编编编程程程程”需要优化成“我喜欢编程”
        String s2="我我我我喜欢编编编编程程程程";
        /**
         * (.)一组 匹配任意字符的
         * \\1:为这个组声明一个组号:1号
         * +:声明是重复的字
         * $1:可以去到第一组代表的那个重复的字
         */
        System.out.println(s2.replaceAll("(.)\\1+", "$1"));
        //2.public String[] split(String regex)按照正则表达式匹配的内容进行分割字符串,返回一个字符串数组
        String s3="古力娜扎82917迪丽热巴93272马儿扎哈";
        String[] names=s3.split("\\w+");
        System.out.println(Arrays.toString(names));

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值