正则表达式之Matcher与Pattern

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

学习正则表达式的时候对Matcher类一直领会不到,经过一段学习后记录下来。

一、Pattern

方法

matches():boolean类型
Pattern.matchers(pattern,content)第一个参数为正则表达式,第二个被验证的字符串
本方法一般用于验证输入的字符串整体是否满足要求
源码:
在这里插入图片描述

二、Matcher

matcher类

属性:

  1. Pattern parentPattern;
  2. int[] groups;
  3. int from, to;
  4. int lookbehindTo;
  5. CharSequence text;

方法:

在这里插入图片描述
在这里插入图片描述
repalceAll():不会修改原字符串,返回的是替换后新的。

find()

:返回boolean类型,用于while循环查出是否匹配到字符串。 如果需要验证字符串整体是否满足要求,则需要加定位符^$。
例如:while(mathcer.find()){

}
group方法

捕获分组
group()
group方法返回getSubSequence().toString()返回所找到的字符串。
例如:
matcher.group(0):表示匹配到的子字符串
matcher.group(1):若有分组,则记录捕获字符串的第一组,以groups[group2]开始,groups[group2+1]结束
matcher.group(2):表示匹配到的子字符串的第二组。
注意 分组不能越界
在这里插入图片描述
命名分组(?pattern):命名捕获,将匹配到的字符串捕获到一个组名称或编号名称中。用于name的字符串不能包含任何标点符号,且不能以数字为开头,可以使用单引号代替尖括号,例如(?‘name’)。 group()方法是重载的,可以用数字取,也可以用String类型的命名取。
非捕获分组
在这里撒打算阿萨daDSDASDF 插入图片描述
不能使用group(1或2等等)获取

分组捕获反向引用

在这里插入图片描述
1.举例说明反向引用作用:匹配个位数和千位数相同,十位数和百位数相同 5225 1551 正则表达式用(\\d)(\\d)\\2\\1 这里的\2和\1分别表示了引用了第二个分组,第一个分组。
2.举例说明反向引用作用:请在字符串中检索商品编号,如12311-333999444。要求满足前面是5位数字,中间-,后边9位数字,且每三位相同。
正则表达式用\\d{5}-(\\d)\\1{2}(\\d)\\2{2}(\\d)\\3{2}

参考资料:B站视频

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值