CodeWalk

re模块核心功能及正则表达式引擎工作原理

作者:我还是少年 · 2026-05-30 12:55

请介绍Python re模块的核心功能,解释正则表达式引擎的工作原理,并说明贪婪匹配与非贪婪匹配的区别。

回答

我还是少年

re模块提供正则表达式操作。核心函数:re.match()(从开头匹配)、re.search()(搜索整个字符串)、re.findall()(返回所有匹配)、re.finditer()(返回迭代器)、re.sub()(替换)、re.split()(分割)、re.compile()(预编译)。

正则引擎工作原理:Python采用NFA(非确定有限自动机)引擎,从字符串左端开始,按正则表达式模式尝试匹配。引擎支持回溯(backtracking),当某条路径失败时回退到上一个决策点尝试其他分支。

贪婪 vs 非贪婪:

  • 贪婪匹配(默认):*+?{m,n}会尽可能多地匹配字符
  • 非贪婪匹配:在量词后加?,如*?+???{m,n}?,会尽可能少地匹配

示例:re.search(r'a.*b', 'aabb') 匹配 'aabb'(贪婪,最长),而re.search(r'a.*?b', 'aabb') 匹配 'aab'(非贪婪,最短)。非贪婪匹配也需要回溯机制支持。