2021-07-25正则表达式

正则表达式

  • 正则表达式 : 定义了字符串的匹配模式

  • 可以用来搜索,编辑或处理文本,并不仅限于某一种语言,但是每种语言中有细微的差别

  • JDK1.4 推出的 java.util.regex 包,很好的支持了正则表达式

  • 常用语法 :

  • \ 转移符 , 把有意义字符转换为无意义字符

  • 但是java中 \ 也是转移符,所以在java中编写正则表达式的时候,需要转移符的时候需要些 两个 \

  • 字符取值范围相关

  • [abc] : 表示 可能是a, 也可能是b, 也可能是c (是abc中的任意一个)

  • [^abc] : 表示不是a,b,c中的任何一个

  • [a-zA-Z] : 表示是大小写字母 , [a-z] 小写字母 , [A-Z] 大写字母 [0-9] 数字0-9

  • [a-zA-Z0-9] : 表示是数字或字母

  • 简洁表示

  • . : 匹配任意字符

  • \d : 表示数字 等同于[0-9]

  • \D : 表示非数字 等同于 [^0-9]

  • \s : 表示由空字符组成, [\t\n\r\x\f]

  • \S : 表示非空字符组成

  • \w : 表示由字母数字下划线组成 [a-zA-Z0-9_]

  • \W : 表示非字母数字下划线 [^a-zA-Z0-9_]

  • 表示数量的

  • ? : 表示出现0次或1次

  • +: 表示1次或多次, 大于等于1
    
  • * : 任意次数(0~N)
    
  • {n} : 表示出现n次 , {2} 表示出现2次

  • {n,m} : 表示出现n次到m次 , {2,5} : 表示出现2~5次

  • {n,} : 表示出现n及以上 >=n

  • () : 把他们看做一个整体

  • | 或 , a|b ,a和b都可以匹配

  • ^ : 以什么什么打头 , 但是 用在[^xxxx] 就表示取反

  • $ : 以什么什么结尾

  • a[a-z] , a1 , aA , a3, 22

  • 校验非汉字

  • [^\u4e00-\u9fa5]

  • Pattern : 创建正则表达式对象,能做一些基本的简单操作

  • 三大功能 :

  • 验证 : boolean matchers(String regex);

  • 拆分 : String[] split(String regex);

  • 替换 : String replaceAll(String regex,String replacement);

  • 实际操作中,有时候我们嫌麻烦,也可以直接使用String里面的一些方法,比如 替换,拆分,验证String类中也有的

public static void main(String[] args) {
        // test_01();
        test_02();
    }
    // 验证 : boolean matchers(String regex);
    public static void test_02() {
        String regex = "(-)?\\d+(\\.\\d+)?";
        String str = "2.43";
        // 全词匹配
        boolean flag = Pattern.matches(regex, str);
        System.out.println(flag);

        // String类中的用法,也是全词匹配
        System.out.println(str.matches(regex));
    }
    // 拆分 String[] split(String regex);
    public static void test_01(){
        String str = "1,2@3!4";
        // 创建正则表达式对象
        Pattern pattern = Pattern.compile("[^0-9]");
        String[] strArray = pattern.split(str);
        for (String string : strArray) {
            System.out.println(string);
        }
        // String的
        String[] strArray1 = str.split("[^0-9]");
        for (String string : strArray1) {
            System.out.println(string);
        }
    }
public static void main(String[] args) {
        String regex = "\\d{11}";
        String tel = "a131131131112";
        // 引擎
        Pattern pattern = Pattern.compile(regex);
        // 匹配器
        Matcher matcher = pattern.matcher(tel);
        // 三种匹配模式
        // matches : 全词匹配   xxx
        // find : 任意位置均可   .*xxx.*
        // lookingAt : 从前到后    xxx.*

        // 全词匹配 , 等于写着 ^ 和 $
        System.out.println(matcher.matches());
        // 注意 : 一个匹配器对象(matcher) ,调用相同的方法可以连用,不建议混用

        matcher = pattern.matcher(tel);
        // 只要最前面的是符合条件的 就行
        System.out.println(matcher.lookingAt());

        matcher = pattern.matcher(tel);
        // 任意位置符合条件 就行
        System.out.println(matcher.find());
    }
//数据提取

public static void main(String[] args) {
        // 可以使用() 对匹配到的数据进行分组, 第一个() 就是第一组,第二个() 就是第二组
        // 也可以不分组,如果不分组的情况下做数据提取,就只能提取到整个匹配到的字符串
        // 分组之后 可以提取对应组的数据
        // ((.{2,3})电话号码是) 第一组
        // (.{2,3}) 第二组
        // (\\d{11}) 第三组
        String string = "张三电话号码是13113113111张三四电话号码是13113113112张三五电话号码是13113113113张四电话号码是13113113114王五电话号码是13113113115赵六电话号码是13113113333孙小黑电话号码是13113113211小红电话号码是13113113311";
        String regex = "((.{2,3})电话号码是)(\\d{11})";
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(string);

        // find 匹配任意位置,匹配到一个之后就停止
        // 如果接着调用find方法,就会接着刚停止的地方继续向后面匹配
        while (matcher.find()) {
            // 所以 结合find特性,可以和group连用,做到数据提取
            // group : 0或者无参, 获取匹配到的整个数据,1 就是第一组,2就是第二组
            // 一个小括号 就是一组
            System.out.println(matcher.group(2) + " : " + matcher.group(3));
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【优质项目推荐】 1、项目代码均经过严格本地测试,运行OK,确保功能稳定后才上传平台。可放心下载并立即投入使用,若遇到任何使用问题,随时欢迎私信反馈与沟通,博主会第一时间回复。 2、项目适用于计算机相关专业(如计科、信息安全、数据科学、人工智能、通信、物联网、自动化、电子信息等)的在校学生、专业教师,或企业员工,小白入门等都适用。 3、该项目不仅具有很高的学习借鉴价值,对于初学者来说,也是入门进阶的绝佳选择;当然也可以直接用于 毕设、课设、期末大作业或项目初期立项演示等。 3、开放创新:如果您有一定基础,且热爱探索钻研,可以在此代码基础上二次开发,进行修改、扩展,创造出属于自己的独特应用。 欢迎下载使用优质资源!欢迎借鉴使用,并欢迎学习交流,共同探索编程的无穷魅力! 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值