张芷铭的个人博客

正则表达式通过普通字符与元字符组合,定义字符串匹配规则,用于文本搜索、替换、验证。

元字符速查

元字符含义示例
.任意单字符a.c → abc, a1c
^字符串开头^The
$字符串结尾end$
*0次或多次ab* → a, ab, abbb
+1次或多次ab+ → ab, abbb
?0次或1次ab? → a, ab
{n}精确n次a{3} → aaa
{n,m}n到m次a{2,4}
``
[]字符集[aeiou], [0-9]
()分组捕获(abc)+

常用模式

# 邮箱
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$

# 中国手机号
^1[3-9]\d{9}$

# 日期 YYYY-MM-DD
^\d{4}-\d{2}-\d{2}$

# URL
^(https?://)?(www\.)?[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}(/.*)?$

Python 示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
import re

# 匹配
re.findall(r'\d+', "123abc456")  # ['123', '456']

# 替换
re.sub(r'abc', 'XYZ', "123abc456")  # '123XYZ456'

# 验证
bool(re.match(r'^\d+$', '12345'))  # True

高级特性

特性语法用途
非捕获分组(?:abc)仅匹配,不保存
正向前瞻(?=abc)后面是 abc
负向前瞻(?!abc)后面不是 abc
正向后瞻(?<=abc)前面是 abc
负向后瞻(?<!abc)前面不是 abc

Comments