re模块核心功能及正则表达式引擎工作原理
请介绍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'(非贪婪,最短)。非贪婪匹配也需要回溯机制支持。