5.Java正则表达式(上篇)

  • 目录

    1.正则表达式-字符类

    2.正则表达式-逻辑运算符

    3.正则表达式-预定义字符

    4.正则表达式-数量词

    5.Pattern和Matcher

    6.贪婪爬取和非贪婪爬取

    7.String类中使用正则表达式

    8.正则表达式-捕获分组

    9.忽略大小写的写法

    10.非捕获分组

  • 1.正则表达式-字符类

    • [abc]:代表a或者b,或者c字符中的一个。
    • [^abc]:代表除a,b,c以外的任何字符。
    • [a-z]:代表a-z的所有小写字符中的一个。
    • [A-Z]:代表A-Z的所有大写字符中的一个。
    • [0-9]:代表0-9之间的某一个数字字符。
    • [a-zA-Z0-9]:代表a-z或者A-Z或者0-9之间的任意一个字符。
    • [a-dm-p]:a 到 d 或 m 到 p之间的任意一个字符。
    • 注:用str.matches("*****")匹配
  • 2.正则表达式-逻辑运算符

    • &&:并且
    • | :或者
    • \ :转义字符
  • 3.正则表达式-预定义字符

    • "." : 匹配任何字符。
    • "\d":任何数字[0-9]的简写;
    • "\D":任何非数字[^0-9]的简写;
    • "\s": 空白字符:[ \t\n\x0B\f\r] 的简写
    • "\S": 非空白字符:[^\s] 的简写
    • "\w":单词字符:[a-zA-Z_0-9]的简写
    • "\W":非单词字符:[^\w]
  • 4.正则表达式-数量词

    • X? : 0次或1次
    • X* : 0次到多次
    • X+ : 1次或多次
    • X{n} : 恰好n次
    • X{n,} : 至少n次
    • X{n,m}: n到m次(n和m都是包含的)
  • 5.Pattern和Matcher

    • Pattern:表示正则表达式
    • Matcher:文本匹配器,作用按照正则表达式的规则去读取字符串,从头开始读取。在大串中去找符合匹配规则的子串。
    • 使用:
      • //1.获取正则表达式的对象(p是一种规则)
      • Pattern p = Pattern.compile("Java\\d{0,2}");
      • //2.获取文本匹配器的对象
      • //拿着m去读取str(一段字符串),找符合p规则的子串
      • Matcher m = p.matcher(str);
      • //3.利用循环获取,如果有,返回true。在底层记录子串的起始索引和结束索引+1
      • while (m.find()) {
      • String s = m.group(); //方法底层会根据find方法记录的索引进行字符串的截取
      • System.out.println(s); // substring(起始索引,结束索引);包头不包尾,所以要结束索引+1
      • } //第二次调用group方法的时候,会根据find方法记录的索引再次截取子串
    • 6.贪婪爬取和非贪婪爬取

      • 贪婪爬取:在爬取数据的时候尽可能的多获取数据
      • 非贪婪爬取:在爬取数据的时候尽可能的少获取数据
      • 只写+和*表示贪婪匹配
      • 在+和后面加问号表示非贪婪爬取
      • +? 非贪婪匹配
      • *? 非贪婪匹配
      • 举例:
      • 如果获取数据:ab+
      • 贪婪爬取获取结果:abbbbbbbbbbbb
      • 非贪婪爬取获取结果:ab
    • 7.String类中使用正则表达式

      • 7.1String类中的split()方法原型:
        • public String[] split(String regex)
        • //参数regex表示正则表达式。可以将当前字符串中匹配regex正则表达式的符号作为"分隔符"来切割字符串。
      • 7.2String类的replaceAll方法原型
        • public String replaceAll(String regex,String newStr)
        • //参数regex表示一个正则表达式。可以将当前字符串中匹配regex正则表达式的字符串替换为newStr。
    • 8.正则表达式-捕获分组

      • 只看左括号,不看有括号,按照左括号的顺序,从左往右,依次为第一组,第二组,第三组等等
      • \\组号:表示把第X组的内容再出来用一次
        String regex2 = "(.+).+\1";
    • 9.忽略大小写的写法

      • //(?i) :表示忽略后面数据的大小写
      • //忽略abc的大小写
      • String regex = "(?i)abc";
      • //a需要一模一样,忽略bc的大小写
      • String regex = "a(?i)bc";
      • //ac需要一模一样,忽略b的大小写
      • String regex = "a((?i)b)c";
    • 10.非捕获分组

      • 非捕获分组:分组之后不需要再用本组数据,仅仅是把数据括起来。
      • 特点:不占用组号
      • (?:) (?=) (?!)都是非捕获分组//更多的使用第一个
        //String regex1 ="[1-9]\d{16}(?:\d|x|x)\1";
        \\1报错原因:(?:)就是非捕获分组,此时是不占用组号的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zd08

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值