1. 正则表达式与re模块概述
正则表达式作为文本处理的瑞士军刀,在数据清洗、日志分析、表单验证等场景中不可或缺。Python内置的re模块提供了完整的正则表达式实现,相比字符串基础方法,它能用更简洁的语法处理复杂模式匹配。我在爬虫开发中曾用一行正则替代了20多行字符串切片代码,效率提升立竿见影。
re模块的核心价值在于:
- 用声明式语法描述文本模式,避免繁琐的过程式操作
- 支持从简单字符匹配到复杂分组捕获的多层级功能
- 通过预编译机制提升重复匹配的性能
- 与Python生态无缝集成,无需额外依赖
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. re模块核心方法解析
2.1 基础匹配方法
re.match()和re.search()是最常用的入门方法:
python复制import re
# match从字符串起始位置匹配
result = re.match(r'\d+', '123abc') # 匹配成功
print(result.group()) # 输出: 123
# search扫描整个字符串
result = re.search(r'\d+', 'abc123def')
print(result.group()) # 输出: 123
关键区别:
match相当于正则表达式开头隐式添加^search找到第一个匹配即返回- 两者都返回
Match对象或None
经验:优先使用search除非必须验证字符串开头,match的严格限制在实际业务中容易造成意外匹配失败
2.2 进阶查找方法
re.findall()和re.finditer()适合提取批量数据:
python复制text = "订单号: 1001 金额: ¥200, 订单号: 1002 金额: ¥350"
# findall返回字符串列表
orders = re.findall(r'订单号: (\d+)', text)
print(orders) # ['1001', '1002']
# finditer返回迭代器
for match in re.finditer(r'¥(\d+)', text):
print(f"找到金额: {match.group(1)}")
性能对比:
- 小文本:
