正则表达式是由普通字符(例如字符a到z)以及特殊字符(称为元字符)组成的文字模式。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行平匹配。
正则能做什么:
数据隐藏:(136****520张先生)
数据采集:(数据爬虫)
数据过滤:(论坛敏感词过滤)
数据验证:(表单验证、手机号码、邮箱地址)
匹配模式也就是修饰符:
表示正则匹配的附加规则,放在正则模式的最尾部
修饰符可以单个使用,也可以多个一起使用
在正在表达式中,匹配模式常用的有两种形式:
g:global缩写,代表全局匹配,匹配除所有满足条件的结果,不加g第一次匹配成功后,正则对象就停止向下匹配。
i:ignore缩写,代表忽略大小写,匹配时,会自动忽略字符串的大小写。
字符簇代表是一个范围,但是匹配时,只能匹配某个福鼎的结果。
字符集 | 含义 |
---|---|
[a-z] | 匹配字符a-z之间的任一字符 |
[A-Z] | 匹配字符A-Z之间的任一字符 |
[0-9] | 匹配数据0-9之间的任一数字 |
[0-9a-z] | 匹配数据0-9 或 字符a-z之间任意字符 |
[0-9a-zA-Z] | 匹配数字0-9、字符a-z、字符A-Z之间任一字符 |
[abcd] | 匹配字符a或b或c或d |
[1234] | 匹配数据1或2或3或4 |
在字符簇中,通过一个^(脱字符)
来表示取反的含义。
字符簇 | 含义 |
---|---|
[^a-z] | 匹配除字符a-z以外的任一字符 |
[^0-9] | 匹配除数据0-9以外的任一字符 |
[^abcd] | 匹配除a、b、c、d以外的任一字符 |
几个比较常用的特殊的匹配符(常用)
字符簇 | 含义 |
---|---|
\d | 匹配一个数字字符,与使用[0-9] 等价 |
\D | 匹配一个非数字字符,与[^0-9] 等价 |
\w | 匹配包括下划线的任何字母、数据、下划线字符,还可以使用[0-9a-zA-Z] |
\W | 匹配任何非字母、数字、下划线字符,等价于[^\w] |
\s | 匹配任何空白字符tab、空格 |
\S | 匹配任何非空白字符,等价于[^\s] |
. | 匹配除 \n 以外的任何单个字符 |
[\u4e00-\u9fa5] | 匹配中文字符中任一字符 |
*
:匹配前面子表达式零次或多次,0到多+
:匹配前面子表达式一次或多次,1到多?
:匹配前面子表达式零次或一次,0或1{n}
:匹配确定的 n 次{n,}
:至少匹配 n 次{n,m}
:最少匹配 n 次、最多匹配 m 次
^(脱字符)
:匹配输入字符串的开始位置$
:匹配输入字符串的结束位置\b
:匹配一个单词的边界\B
:匹配非单词的边界
匹配手机号:^1[34578]\d{9}
匹配am是一个单词
i am 张三
规则:\bam\b
因为在正则表达式中 .(点)
、+
、\
等是属于表达式的一部分,但是我们在匹配时,字符串中也需要匹配这些特殊字符,所以我们必须使用 反斜杠
对某些特殊字符进行转义
点号 .
小括号 ()
中括号 []
左斜杠 /
右斜杠 \
选择匹配符 |
eg. 匹配一个合法的URL
http://www.couragesteak.com
规则:\w+:\/\/\w+\.\w+\.\w+
# 匹配苹果设备
字符:ipad,iphone,iwatch,imac,iccc,i5t,i777
规则:\bi(pad|phone|mac|watch)\b
正向预查:正向往后查
正预测:往前看看,但不真查
前瞻:
先行断言:还没到,就判断结论
需求:将字符串里面的ing结尾的词根部分找出
hello, when i am working, do not coming
规则1:\b\w+ing\b
结果:working、coming
规则2:\b\w+(?=ing\b)
结果:work、com
负向预查:
负预测:
前瞻:
先行否定:
需求:将非ing结尾的单词找出来
hello, when i am working, do not coming
规则:\b\w+(?!ing)\w{3}\b
分析:至少由4个字母
结果:hello、when
贪婪模式
:能匹配多的就不匹配少的(默认)
惰性匹配(非贪婪)
:在限定符后面添加一个 ?
,优先匹配少的。
参考地址:
https://www.bilibili.com/video/BV1uC4y187dF
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/zx77588023/article/details/126385214
内容来源于网络,如有侵权,请联系作者删除!