全网最详细正则表达式

目录

前言

一、简介

二、开始学习

1.基本匹配方法

2.重复/数量

3.特殊字符

4.更精准的匹配——位置断言

5.三种标记

6.其他

总结



前言

        介绍正则表达式,分类整理,递进展示。


一、简介

        正则表达式是表示搜索模式的字符串,常缩写成 Regex 或 Regexp。它常用于查找和替换文本中的字词。此外,我们可以测试文本是否符合我们设置的规则。

二、开始学习

1.基本匹配方法

单个字符的匹配方法
类型标准示例匹配内容 / 解释
基本匹配regexp匹配 regexp
点号.匹配所有字符
字符集[aeiou]匹配a,e,i,o,u中任意一个字符
否定字符集[^aeiou]a,e,i,o,u中任意一个字符,都不能匹配
字母范围[a-z]匹配a到z,26个字符中的任意一个字符
数字范围[0-9]匹配0到9,10个数字中的任意一个数字

小结:

        点号[]^,以及表示范围时用到的中横线 -,须熟记其含义!

2.重复/数量

修饰符
类型标准示例匹配内容 / 解释
星号,**0次或者多次
加号,++1次或者多次
问号,??0次或者1次
大括号,{},固定次数{2}2次
大括号,{},次数范围{2,}至少2次
大括号,{},次数范围{2,5}2次至5次

3.特殊字符

类型标准示例匹配内容 / 解释
分组,()(abc)()将abc划成一个分组,方便引用
引用组,\1(ha)-\1,(haa)-\2

匹配内容:ha-ha,haa-haa

\1引用第一个分组ha,

\2引用第二个分组haa,

引用避免重复书写!

非捕获分组,(?:)(?:ha)-ha,(haa)-\1

(?:)表示该分组不被引用,

故\1引用的分组是haa,

匹配内容:ha-ha,haa-haa

竖线,|(c|r)at|dog

|为表达式提供分支功能,

你可以理解为“或”,

匹配内容:cat 或 rat 或 dog

转义字符,\\

存在特殊功能的字符,

因为它已经代表一种含义,

此时如果实际上想匹配的,

是这一类字符,需要使用转义字符:\

插入符,^^a

匹配开头字符

^,提示其后的字符,

与待匹配内容的开头字符进行匹配

美元符号,$a$

匹配结尾字符

$,提示其前的字符,

与待匹配内容的结尾字符进行匹配

单词字符,\w\w字母,数字,下划线_
非单词字符,\W\W不是字母,数字,下划线_
数字字符,\d\d0至9的数字
非数字字符,\D\D不是0至9的数字
空白符,\s\s空格符,制表符,换行符
非空白符,\S\S不是空格符,制表符,换行符

小结:

        颜色标记的类别,是常用的类型,多用多熟练;

        分组符号 () 的优先级高,该符号先生效,其他符号再生效;举个例子如下:

        ^(abc),匹配以abc开头的字符串内容;

4.更精准的匹配——位置断言

类型标准示例匹配内容 / 解释
正向先行断言,(?=)\d(?=flag)

只要flag前面紧挨的第一个数字,都匹配

负向先行断言,(?!)\d(?!flag)

只要不是flag前面紧挨的第一个数字,都匹配

正向后行断言,(?<=)(?<=flag)\d

只要flag后面紧挨的第一个数字,都匹配

负向后行断言,(?<!)(?<!flag)\d

只要不是flag后面紧挨的第一个数字,都匹配

小结:

        上述示例中,\d为匹配模式,匹配词是一个数字;

        除去语法部分,单词flag,为标记词

        正向表示,这种情况都匹配;

        负向表示,除了这种情况都匹配;

        先行表示匹配词先于标记词出现;

        后行表示匹配词后于标记词出现;

        先行和后行,匹配词在标记词的前后位置;

以下图示为测试效果(测试地址:https://www.sojson.com/regex/check.html):

第一类:正向先行

第二类:负向先行

第三类:正向后行

第四类:负向后行

5.三种标记

        全局标记,g;

        多行标记,m;

        忽略大小写标记,i;

6.其他

        贪婪匹配,正则表达式默认进行贪婪匹配,即匹配的长度尽可能长;

        懒惰匹配,加?;


总结

        正则表达式,多练习,总结归类。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值