Java的正则表达式详细演示说明(建议收藏)

正则表达式,学一次忘一次,这回必须给她做点标记,避免过几天她又不是我的东西了

前言:个人水平有限,可能并没有解释到您想要的程度,所以不足之处欢迎您的补充,愿我们一起进步,最后感谢您的阅览


一.正则表达式的使用

先上案例,有例子场景更清晰

在这里插入图片描述

对,用起来就是这么爽,想一想不用正则,你用if判断和for循环来做,会写多少行判断代码?


二.正则表达式语法

正则表达式中的中括号,[ ]是表示一个范围,在其范围之内为true,不在其范围中为false

在这里插入图片描述

总结
① ^为取反,去掉的意思
② - 代表是从… 到… 这个范围
③ &&是取两个范围的交集,单写一个&没有任何含义,就只是一个&字符
④(?i)abc 匹配时忽略abc的大小写

使用方式
str.matches("正则匹配内容")
str是一个要匹配的字符串,如果str在正则匹配范围中,就返回true,否则返回false

演示一个容易出错的,多注意,正则表达式是从左到右一个一个的去匹配的

"ab".matches("[abc]")  //结果为false
"ab".matches("[abc][abc]")  //结果为true

第一个a会跟第一个[abc]判断,第二个b会跟第二个[abc]判断


如果不想像上面那样一个字符一个字符匹配,就使用下面的数量词
在这里插入图片描述

使用实例如下
在这里插入图片描述

写正则表达式心得:拿着一个正确数据,从左到右,依次去写


转义字符 /

这里多提一嘴转义字符
在这里插入图片描述

这就是为什么正则匹配使用时会用 \ \d来表示一个数字,避免 \d 给转义了, 再加个\ ,让它变成普通的\字符


捕获分组

在这里插入图片描述

使用如下,下面是两个比较经典的需求,几个例子可能不太容易看懂,但认真看几遍就会很清晰

匹配开头和结束字符是否相同

在这里插入图片描述


判断开始部分和结束部分是否一致,部分内部字符也要相同

在这里插入图片描述


去掉重复字符

在这里插入图片描述


总结
在这里插入图片描述

在这里插入图片描述

不占用组号的意思就是,组号规则是从第一个左括号开,依次为第一组,第二组,而对于这种非捕获分组,它的左括号不算在组号规则内


三.正则表达式作用

1.校验字符串是否满足规则

可以用来匹配输入的是否满足定义的要求,常见的有输入手机号和验证码匹配
下面实例展示

验证手机号

在这里插入图片描述

验证邮箱

在这里插入图片描述


这里推荐一个idea的插件,AnyRule,根据范例改改就能用,比如下面

在这里插入图片描述


2.在文本中过滤需要内容

这个就相当于爬虫,从一段文本中过滤获取指定内容信息
m 文本匹配器对象
str 大串
p 匹配规则
m要再str中找到符合p规则的小串

拿着文本匹配器从头开始读取,寻找是否有满足规则的子串
如果没有,返回false;如果有,则返回true,其底层记录子串的起始索引和结束索引+1
find方法底层会根据find方法记录的索引进行字符串的截取。subString(起始索引,结束索引);包头不包尾
如(0,4)但是不包含4索引 会把截取的小串进行返回

    public static void main(String[] args) {
        String str = "东风夜放花千树,更吹落、星如雨。宝马雕车香满路。凤箫声动,玉壶光转,一夜鱼龙舞。" +
                "蛾儿雪柳黄金缕,笑语盈盈暗香去。众里寻他千百度,蓦然回首,那人却在,灯火阑珊处。";
        //获取正则表达式对象
        Pattern p = Pattern.compile("千\\w{0,1}");
        //获取文本匹配器对象
        Matcher m = p.matcher(str);
        //利用循环获取
        while(m.find()){
            String s = m.group();
            System.out.println(s);
        }
    }

在这里插入图片描述


带条件爬取
注:这里的?:没有特殊含义,regex3和regex2是一样的,:只是代表前面的所有数据,非要理解的话,就是这种 java:8这种类型。这个?:也可以不写,(毕竟写不写没区别)但是AnyRule插件上是这么用的,不理解的话,用插件可能一脸懵。

在这里插入图片描述


贪婪爬取和非贪婪爬取

如下,ab+为贪婪爬取,ab+?为非贪婪爬取

在这里插入图片描述


四.正则表达式在字符串中的使用

在这里插入图片描述

在这里插入图片描述

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

随身携带的笑

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

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

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

打赏作者

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

抵扣说明:

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

余额充值