Python正则表达式核心用法与代码示例
介绍Python标准库re模块的核心用法,涵盖字符串匹配检测、子串提取、分组捕获、全局搜索、替换拆分及对象编译优化等场景,提供可直接运行的Python 3代码示例与关键参数说明。
Python正则表达式常见操作分类
第1步:检测目标字符串是否包含匹配内容(re.search)
当需要判断文本中是否存在符合正则模式的片段时使用此方法。若找到匹配项返回匹配对象,否则返回None。
import re
pattern = r"\d+\.\d+" # 定义浮点数匹配规则
text = "CPU温度:98.5℃,内存占用:42%"
match = re.search(pattern, text)
if match:
print("检测到数值片段:", match.group())
else:
print("未找到匹配的数值")
第2步:验证整个字符串是否完全符合正则规则(re.match)
该方法仅从字符串开头进行匹配,适用于格式校验。需在正则末尾添加锚点以确保全程匹配。
import re
# \Z 表示字符串结束位置
tel_pattern = r"^1[3-9]\d{9}$"
tel_str = "13800138000"
if re.match(tel_pattern, tel_str):
print("手机号格式合法")
else:
print("格式校验失败")
第3步:获取匹配详情与子串提取(match.group)
通过匹配对象可精准定位索引范围并提取对应内容。推荐使用括号创建捕获组,数字索引代表第几组,命名组使用(?P<name>...)语法。
import re
log_pattern = r"\[(?P<level>INFO|ERROR)\]\s*(?P<msg>.+)"
log_line = "[ERROR] 数据库连接超时"
m = re.search(log_pattern, log_line)
if m:
# 起始索引、结束索引、完整匹配文本
print(f"位置:{m.start()} → {m.end()}, 文本:{m.group(0)}")
# 按组提取
print(f"级别:{m.group('level')}, 详情:{m.group('msg')}")
else:
print("无匹配日志")
第4步:获取全部匹配项或遍历匹配位置(re.findall / re.finditer)
当目标文本包含多处符合条件片段时,findall返回列表,finditer返回迭代器以节省内存。
import re
html_snippet = "<div class='item'>A</div><span>B</span>"
# findall 返回标签名列表
labels = re.findall(r"<(\w+)>", html_snippet)
print("提取到的标签:", labels)
# finditer 适合处理超大文本流
for m in re.finditer(r"<\w+>[^<]+</\w+>", html_snippet):
print(f"匹配区间:{m.start()}~{m.end()},内容:{m.group()}")
第5步:执行批量替换或按规则拆分(re.sub / re.split)
正则替换常用于数据清洗,拆分适用于非标准分隔符的场景。均可指定最大替换次数。
import re
clean_text = "用户ID:1024,状态:活跃,时间:2023-10-01"
# 去除中文标点与数字
result_clean = re.sub(r"[\d:,]", " ", clean_text)
print("清理后:", result_clean.strip())
# 按空格或制表符拆分
sentence = "Python 是 一门 易读的 语言"
parts = re.split(r"\s+", sentence)
print("拆分数组:", parts)
第6步:预编译正则对象以优化多次调用性能(re.compile)
在循环或高频场景中,将正则表达式编译为Pattern对象可减少解析开销。编译后的对象提供与方法相同的接口。
import re
email_rule = re.compile(r"^[\w.-]+@[\w.-]+\.com$")
user_list = ["dev@example.com", "admin@test.org", "user@site.com"]
valid_emails = []
for addr in user_list:
if email_rule.search(addr):
valid_emails.append(addr)
print("有效邮箱:", valid_emails)
语法修正与排错建议
原始参考代码基于早期版本整理,现代Python开发需注意以下关键点以避免运行异常:
1. 弃用ur""前缀:Python 3原生支持Unicode编码,直接使用r""或普通字符串字面量即可。
2. 拼写与安全调用:注意match.end()不可省略首字母;有名组调用必须带圆点match.group("groupname")。未匹配时返回值None,直接访问属性会触发AttributeError,务必先做布尔判断。
3. 标志位配合:跨行匹配或忽略大小写时,可在re.compile()中添加re.DOTALL或re.IGNORECASE标志。
总结
以上就是Python正则表达式常见用法与代码示例的详细内容,更多关于Python基础编程与文本处理的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













