Python 正则速记
说明
- 本页记录
Python re模块中高频但容易忘的表达式写法. - 适合做文本抽取, 日志清洗和简单格式校验时快速查阅.
后向断言
(?<=...)表示正向后向断言, 即要求前面满足条件, 但匹配结果本身不包含前面的内容.(?<!...)表示负向后向断言.
示例 1
想要匹配 def, 但要求前面是 abc:
m = re.search(r'(?<=abc)def', 'abcdefaaaa')
m.group(0)
# 'def'
示例 2
想要匹配 \w+, 但要求前面是 -:
m = re.search(r'(?<=-)\w+', 'spam-egg')
m.group(0)
# 'egg'
常见速记
- 匹配数字:
\d+ - 匹配单词字符:
\w+ - 非贪婪匹配:
.*? - 行首行尾:
^...$ - 分组提取:
( ... ) - 命名分组:
(?P<name>...)
使用建议
- Python 正则字符串尽量写成原始字符串, 例如
r'\d+', 避免反斜杠转义混乱. - 先用最小样例验证表达式, 再扩大到真实文本, 可以减少误匹配.
- 若只是简单前缀, 后缀或包含判断, 未必一定要上正则, 直接字符串方法通常更易维护.
补充
- 这类断言适合做“前后文约束但不消耗字符”的匹配.
- 复杂表达式建议补测试样例, 避免后续维护时无意改坏边界条件.