Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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+', 避免反斜杠转义混乱.
  • 先用最小样例验证表达式, 再扩大到真实文本, 可以减少误匹配.
  • 若只是简单前缀, 后缀或包含判断, 未必一定要上正则, 直接字符串方法通常更易维护.

补充

  • 这类断言适合做“前后文约束但不消耗字符”的匹配.
  • 复杂表达式建议补测试样例, 避免后续维护时无意改坏边界条件.