正则表达式极简入门¶
在文章后有补充一些例子以方便理解
1. 量词¶
1.1 ?¶
表示?
前的字符可有可无
1.2 *¶
表示*
前的字符可出现零次、一次或多次
1.3 +¶
表示+
前的字符可出现一次或多次
1.4 {}¶
限定字符出现次数
{x,y}
匹配出现次数在闭区间\([x,y]\)之间的内容,省略则到无穷或0
以上均可与括号搭配匹配多个字符
2. 运算¶
2.1 或¶
|
表示选择运算符,同时匹配前后
注意
用括号表明层级关系
2.2 预搜索¶
匹配后面是/不是exp1
的exp2
匹配前面是/不是exp1
的exp2
3. 字符类¶
3.1 按范围匹配¶
[]
表示字符可以取自一个范围
例如:[abc]
[a-zA-Z]
[a-z0-9]
[a-Z]
后方添加+
表明匹配连续的一串,否则逐字符进行匹配
^
表示取反
例如:[^a-zA-Z]
表示匹配英文字母外的所有字符(包括换行符)
3.2 元字符¶
\d: 所有数字
\w: 单词——英文、数字、上下划线
\s: 空白符——空格 Tab 换行
\b: 单词字符的边界
\n: 换行符
\r: 回车符
\t: Tab
\v: 垂直制表符
\\: 转义,匹配\本身
W、S、D大写表示取反
.
表示任意字符,不包括换行符
^
在字符后只会匹配行首,$
在字符后只会匹配行尾
3.3 贪婪匹配和懒惰匹配¶
对于<span><b> html </b></span>
这样的内容<.+>
会全部匹配(默认<属于.
的范围>),需要使用<.+?>
改为懒惰匹配
方法:在量词后加?
4. 例子¶
在爬虫中,我们常用.*?
匹配所需要获取的链接等文字
例如下面这一正则表达式会匹配所有的超链接,注意?是必须的,否则会执行贪婪匹配:
下面这个例子会在一大串文本(最好是中文)中匹配http(s)链接:
s后的大括号表示s可有可无,在其后的中括号列出了链接中可能出现的各种字符
作者:WJS
文档创建时间:2022-11-18 22:28:32
最后修改时间:2023-01-25 12:49:12