国际访客建议访问 Primers 编程伙伴 国际服 以获得更好的体验。 快速访问 Python 正则表达式 说明

# 正则表达式的说明

正则表达式(Regular Expression) 是一种用于匹配和处理文本的强大工具,它使用特定语法构成的字符串来定义搜索模式。

例如表单校验中检查输入的邮箱地址是否正确,逐个字符进行校验十分繁琐,可以使用正则表达式 ^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$ 进行校验。

# 元字符

元字符 含义 示例
. 匹配任意一个字符(除换行符) a.c -> abc, a1c
^ 匹配字符串开头 ^abc -> abcxxxx
$ 匹配字符串结尾 abc$ -> xxxxabc
* 匹配前一个字符出现 0次或多次 a* -> "", a, aa
+ 匹配前一个字符出现 1次或多次 a+ -> a, aa
? 匹配前一个字符 0次或1次 a? -> "", a
{n} 匹配前一个字符 n 次 a{2} -> aa
{min, } 匹配前一个字符 至少 min 次 a{2,} -> aa, aaa, aaaa
{min, max} 匹配前一个字符 min 次至 max 次 a{2,3} -> aa, aaa
[] 匹配括号内的任意一个字符 [abc] -> a, b, c
[^] 匹配不在括号内的任意一个字符 [^abc] -> d, e, f
[-] 表示范围 [a-z] -> a, b, y, z
() 分组 (abc)+ -> abc, abcabc
\| abc\|xyz -> abc, xyz
\d 匹配任意数字,等价于 [0-9] \d -> 1, 2, 3
\D 匹配任意非数字,等价于 [^0-9] \D -> a, b, _, @
\w 匹配任意字母、数字、下划线,等价于 [a-zA-Z0-9_] \w -> a, 1, _
\W 匹配任意非字母、数字、下划线,等价于 [^a-zA-Z0-9_] \W -> @, #
\s 匹配任意空白字符(空格,\n, \r, \t 等) \s ->
\S 匹配任意非空白字符 \S -> a, 1 ,@
\b 匹配单词边界 \bcat\b -> This is a cat 中的 cat
\B 匹配非单词边界 \Bcat\B -> scatter 中的 cat
\r 回车符
\n 换行符
\f 换页符
\t 制表符
\v 垂直制表符
\ 转义字符,使后面的特殊字符表示字符本身而非特殊含义 \+ -> +

# 贪婪模式与懒惰模式

在默认情况下,使用贪婪模式,即可以匹配不同长度时匹配最长的长度。如果追加额外的 ? 则使用懒惰模式,即可以匹配不同长度时匹配最短的长度。

贪婪模式 说明 懒惰模式 说明
.* 零次或多次,取最长匹配 .*? 零次或多次,取最短匹配
.+ 一次或多次,取最长匹配 .+? 一次或多次,取最短匹配
.? 零次或一次,取最长匹配 .?? 零次或一次,取最短匹配
.{n,m} n 至 m 次,取最长匹配 .{n,m}? n 至 m 次,取最短匹配
.{n,} 至少 n 次,取最长匹配 .{n,m}? 至少 n 次,取最短匹配
本文 更新于: 2025-05-31 19:53:12 创建于: 2025-05-31 19:53:12