正则表达式

Regular Expression, 正则表达式, ⼀种使⽤表达式的⽅式对字符串 进⾏匹配的语法规则. 我们抓取到的⽹⻚源代码本质上就是⼀个超⻓的字符串, 想从⾥⾯提 取内容.⽤正则再合适不过了. 正则的优点: 速度快, 效率⾼, 准确性⾼ 正则的缺点: 新⼿上⼿难度有 点⼉⾼. 不过只要掌握了正则编写的逻辑关系, 写出⼀个提取⻚⾯内容的正则 其实并不复杂 正则的语法: 使⽤元字符进⾏排列组合⽤来匹配字符串 在线测试正 则表达式https://tool.oschina.net/regex/

常用元字符:具有固定含义的特殊符号

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
\w    	 匹配字母数字下划线
\d 匹配数字
\s 匹配空白符
\t 匹配一个制表符

^ 匹配字符串的开始
$ 匹配字符串的结尾

\W 匹配非字母数字下划线
\D 匹配数字
\S 匹配空白符

a|b 匹配字符a或者b
() 匹配括号内的表达式,也表示一个组
[...] 匹配字符串中的字符
[^...] 匹配除了字符组中字符的所有字符

量词:控制前面元字符出现的次数

1
2
3
4
5
6
*		   重复零次或者更多次
+ 重复一次或者多次
? 重复零次或者一次
{n} 重复n
{n,} 重复n次或者更多次
{n,m} 重复n到m次

贪婪匹配和惰性匹配

1
2
.*			贪婪匹配(尽可能多的匹配内容)
.*? 惰性匹配(尽可能少的匹配内容)

案例

1
2
3
4
5
6
7
8
案例 1
<div class="jay">周杰伦</div><div class="jj">林俊杰</div>
测试表达式
<div class=".*?">.*?</div>
测试结果
两处匹配
<div class="jay">周杰伦</div>
<div class="jj">林俊杰</div>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
案例 2
str: 玩⼉吃鸡游戏, 晚上⼀起上游戏, ⼲嘛呢? 打游戏啊
reg: 玩⼉.*?游戏
此时匹配的是: 玩⼉吃鸡游戏
reg: 玩⼉.*游戏
此时匹配的是: 玩⼉吃鸡游戏, 晚上⼀起上游戏, ⼲嘛呢? 打游戏


str: <div>胡辣汤</div>
reg: <.*>
结果: <div>胡辣汤</div>
str: <div>胡辣汤</div>
reg: <.*?>
结果:
<div>
</div>
str: <div>胡辣汤</div><span>饭团</span>
reg: <div>.*?</div>
结果:
<div>胡辣汤</div>

正则表达式
https://equinox-shame.github.io/2022/03/14/正则表达式/
作者
梓曰
发布于
2022年3月14日
许可协议