正则表达式


字符匹配符

符号解释
[]可接收的字符列表
[abc]
接收abc中任意1个字符
[^]不可接收的字符列表
[^abc]
不接收abc中任意1个字符
  • | 连字符
    a - c
    a到c任意一个小写字符
    . | 匹配除\n以外的任何字符
    a..b
    以a开头,以b结尾,中间包括2个任意字符的长度为4的字符串
    \\d | 匹配单个数字字符
    \\d\\d\\d
    任意3个数字字符
    \\D |匹配单个非数字字符
    \\w | 匹配单个数字、大小写字母字符
    \\s | 匹配任何空白字符(空格、制表符等)
    \S | 匹配任何非空白字符

选择匹配符

符号解释
|匹配"|"之前或之后的表达式
ab | cd
ab或者cd

限定符

符号解释
  • | 指定字符重复0次或n次(无要求) 零到多
    (abc)*
    仅包含任意个abc的字符串
  • | 指定字符重复1次或n次(至少一次) 1到多
    m+(abc)*
    以至少1个m开头,后接任意个abc的字符串
    ? | 指定字符重复0次或1次(最多一次)
    m+abc?
    以至少1个m开头,后接ab或abc的字符串
    {n} | 只能输入n个字符
    [abcd]{3}
    由abcd中字母组成的任意长度为3的字符串
    {n,}| 指定至少n个匹配
    [abcd]{3,}
    由abcd中字母组成的任意长度不小于3的字符串
    {n,m} | 指定至少n个但不多于m个匹配
    [abcd]{3,5}
    由abcd中字母组成的任意长度不小于3不大于5的字符串

定位符

符号解释
^指定起始字符
^[0-9]+[a-z]*
以至少1个数字开头,后接任意个小写字母的字符串
$指定结束字符
^[0-9]\-[a-z]+$
以1个数字开头后接连字符"-",并以至少1个小写字母结尾的字符串
\b匹配目标字符串的边界
han\b
这里说的字符串的我边界指的是子串间有空格,或者是目标字符串的结束位置
\B匹配目标字符串的非边界
han\B
和\b的含义刚刚相反

捕获分组

符号解释
(pattern)非命名捕获
捕获匹配的字符串。
(?pattern)命名捕获
(?\d\d)

非捕获分组

符号解释
(?:pattern)匹配pattern但不捕获该匹配的子表达式,不存储供以后使用
zyy(?:学长|学姐) 等同于 zyy学长
(?=pattern)windows(?=95|98|NT|2000)
匹配windows2000,但不匹配windows3.1
(?!pattern)windows(?=95|98|NT|2000)
匹配windows3.1,但不匹配windows2000

非贪婪匹配

符号解释
+?得到一个数字字符,满足条件,不在匹配

反向应用

符号解释
内部反向引用\\分组号
(\d)\1
要匹配两个连续的相同数字
外部反向引用$分组号
matcher1.replaceAll(“$1”)
匹配到的内容替换成组1数据

不区分大小写

符号解释
(?i)abc表示abc都不区分大小写
a(?i)bc表示bc不区分大小写
a((?i)b)c表示只有b不区分大小写
Pattern.compile(regStr,Pattern.CASE_INSENSITIVE)匹配时,不区分大小写

正则表达式语法

       //匹配的内容
        String content = "";
        //匹配规则
        String regStr = "\\d\\d\\d\\d";
        //创建模式对象[即正则表达式对象]
        Pattern pattern = Pattern.compile(regStr);
        //创建匹配器
        //说明: 创建匹配器matcher,按照 正则表达式的规则 去匹配 content字符串
        Matcher matcher = pattern.matcher(content);

        while (matcher.find()){
            System.out.println(matcher.group(0));
        }

在这里插入图片描述
groups存放符合要求的字符串在查找文本中的位置
groups每次都会刷新,因此,查找到第二次符合要求的字符串时,会将该字符串的起始位置存放到groups[0] , 结束位置 + 1 存放到 group[1] 中
在这里插入图片描述

分组

在这里插入图片描述
groups[0] 记录 匹配字符串的第一个字符位置
groups[1] 记录 匹配字符串的最后一个字符位置 + 1

groups[2] 记录 第一组 匹配到字符串的第一个字符位置
groups[3] 记录 第一组 匹配到字符串的最后一个字符位置 + 1

groups[4] 记录 第二组 匹配到字符串的第一个字符位置
groups[5] 记录 第二组 匹配到字符串的最后一个字符位置 + 1


在这里插入图片描述
matcher.group(?) ? 代表第几组
matcher.group[0] 匹配到字符串
matcher.group[1] 匹配到字符串的第一组
matcher.group[2] 匹配到字符串的第二组


在这里插入图片描述
group = 2;
getSubSequence(groups[2 * 2], groups[2 * 2 + 1]).toString;
getSubSequence(groups[4], groups[5]).toString;
groups[4] 和 groups[5] 存放的正是 第二组字符串的 起始位置 和 结尾位置 + 1
返回 截取后的字符串
在这里插入图片描述

正则表达式分类

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

字符匹配符

在这里插入图片描述
在这里插入图片描述
不区分大小写
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

选择匹配符

在这里插入图片描述
在这里插入图片描述

限定符

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

定位符

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

捕获分组

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

非捕获分组

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

非贪婪匹配

在这里插入图片描述

应用

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

Pattern类

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
去掉定位符,传统匹配方式就失效了,而整体匹配还能验证成功
在这里插入图片描述

Matcher类

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

反向引用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在String中使用正则表达式

字符串的metches是整体匹配

替换

在这里插入图片描述

匹配

在这里插入图片描述

分割

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值