正则表达式详细知识点

x33g5p2x  于2个月前 转载在 其他  
字(1.7k)|赞(0)|评价(0)|浏览(30)

1 介绍

正则表达式是由普通字符(例如字符a到z)以及特殊字符(称为元字符)组成的文字模式。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行平匹配。

正则能做什么:

数据隐藏:(136****520张先生)
数据采集:(数据爬虫)
数据过滤:(论坛敏感词过滤)
数据验证:(表单验证、手机号码、邮箱地址)

1.2 匹配模式

匹配模式也就是修饰符:
表示正则匹配的附加规则,放在正则模式的最尾部
修饰符可以单个使用,也可以多个一起使用

在正在表达式中,匹配模式常用的有两种形式:
g:global缩写,代表全局匹配,匹配除所有满足条件的结果,不加g第一次匹配成功后,正则对象就停止向下匹配。

i:ignore缩写,代表忽略大小写,匹配时,会自动忽略字符串的大小写。

2 匹配符(查什么)

字符簇代表是一个范围,但是匹配时,只能匹配某个福鼎的结果。

字符集含义
[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]匹配中文字符中任一字符

3 限定符(查多少)

*:匹配前面子表达式零次或多次,0到多
+:匹配前面子表达式一次或多次,1到多
?:匹配前面子表达式零次或一次,0或1
{n}:匹配确定的 n 次
{n,}:至少匹配 n 次
{n,m}:最少匹配 n 次、最多匹配 m 次

4 定位符(从哪查)

^(脱字符):匹配输入字符串的开始位置
$:匹配输入字符串的结束位置
\b:匹配一个单词的边界
\B:匹配非单词的边界

匹配手机号:^1[34578]\d{9}

匹配am是一个单词

i am 张三
规则:\bam\b

5 转义字符

因为在正则表达式中 .(点)+\ 等是属于表达式的一部分,但是我们在匹配时,字符串中也需要匹配这些特殊字符,所以我们必须使用 反斜杠 对某些特殊字符进行转义

点号 .
小括号 ()
中括号 []
左斜杠 /
右斜杠 \
选择匹配符 |

eg. 匹配一个合法的URL

http://www.couragesteak.com
规则:\w+:\/\/\w+\.\w+\.\w+

6 或者的用法

# 匹配苹果设备
字符:ipad,iphone,iwatch,imac,iccc,i5t,i777
规则:\bi(pad|phone|mac|watch)\b

7 预查

正向预查:正向往后查
正预测:往前看看,但不真查
前瞻:
先行断言:还没到,就判断结论

需求:将字符串里面的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

8 贪婪与非贪婪

贪婪模式:能匹配多的就不匹配少的(默认)

惰性匹配(非贪婪):在限定符后面添加一个 ? ,优先匹配少的。

参考地址:
https://www.bilibili.com/video/BV1uC4y187dF

相关文章