Python自学22 - 正则表达式的应用

Python自学22 - 正则表达式的应用

在 Python 自学之旅中,正则表达式是处理字符串的 “瑞士军刀”。经过前面章节对正则表达式基础语法的学习,本节课我们将聚焦其在 Python 中的实际应用,通过re模块的核心函数,解决字符串匹配、提取、替换等常见问题,让你真正将正则表达式运用到项目开发中。

在进入应用前,先快速回顾正则表达式的核心要素(避免遗忘基础):

  • 元字符:.(匹配任意字符)、^(开头匹配)、$(结尾匹配)、[](字符集)、\(转义)等;

  • 量词:*(0次及以上)、+(1次及以上)、?(0次或1次)、{n,m}(n到m次);

  • 特殊序列:\d(数字)、\w(字母/数字/下划线)、\s(空白字符)等。

正则表达式的核心价值是 “用简洁的语法描述复杂的字符串规则”,而 Python 的re模块则是实现这一价值的工具。

一、为什么要学正则表达式?

在文本处理、数据清洗、日志分析、爬虫开发等场景中,我们经常需要从一大段文字中提取特定信息。
例如:

  • 提取邮箱地址
  • 验证手机号格式
  • 从日志中抓取 IP
  • 批量替换字符串

如果用普通字符串方法(splitfindreplace),代码会很冗长。
正则表达式(Regular Expression, regex) 提供了一种强大而简洁的方式来匹配和操作文本。


二、Python 中的正则模块

Python 内置了 re 模块,常用方法如下:

方法作用
re.match(pattern, string)从字符串开头匹配
re.search(pattern, string)扫描整个字符串,返回第一个匹配
re.findall(pattern, string)返回所有匹配结果(列表)
re.finditer(pattern, string)返回迭代器,逐个匹配
re.sub(pattern, repl, string)替换匹配内容
re.split(pattern, string)按匹配规则分割字符串
re.compile(pattern)预编译正则,提高复用效率

三、常见正则表达式语法

  • . :匹配任意字符(除换行符)
  • \d :匹配数字,相当于 [0-9]
  • \w :匹配字母、数字、下划线
  • \s :匹配空白字符(空格、制表符等)
  • ^ :匹配字符串开头
  • $ :匹配字符串结尾
  • * :重复 0 次或多次
  • + :重复 1 次或多次
  • ? :重复 0 次或 1 次
  • {m,n} :重复 m 到 n 次
  • [] :字符集,例如 [abc] 匹配 a/b/c
  • | :或逻辑,例如 cat|dog 匹配 cat 或 dog
  • () :分组,提取子串

四、实战案例

1. 匹配邮箱

import re

text = "请联系我:test_user123@example.com"
pattern = r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-z]{2,}"

result = re.search(pattern, text)
if result:
    print("找到邮箱:", result.group())

输出:

找到邮箱: test_user123@example.com

2. 验证手机号(中国大陆)

pattern = r"^1[3-9]\d{9}$"
print(bool(re.match(pattern, "13812345678")))  # True
print(bool(re.match(pattern, "123456")))       # False

3. 提取日志中的 IP

log = "2025-09-30 10:23:45 - INFO - Client IP: 192.168.1.101 connected"
pattern = r"\b\d{1,3}(?:\.\d{1,3}){3}\b"

ip = re.search(pattern, log)
print("IP 地址:", ip.group())

4. 文本替换

text = "今天的价格是100元,明天的价格是200元"
pattern = r"\d+"

new_text = re.sub(pattern, "XXX", text)
print(new_text)

输出:

今天的价格是XXX元,明天的价格是XXX元

五、技巧与建议

  1. 调试正则:推荐使用 regex101.com 在线测试。
  2. 分组提取:用 () 提取子串,结合 group() 使用。
  3. 预编译:在循环中使用 re.compile() 提高性能。
  4. 避免过度复杂:正则强大,但可读性差,能用简单方法时不要滥用。

六、总结

  • 正则表达式是文本处理的利器,掌握后能极大提升效率。
  • Python 的 re 模块提供了完整的正则支持。
  • 常见应用包括:匹配、提取、验证、替换、分割。
  • 建议结合实际项目练习,比如:日志分析、爬虫数据清洗、表单验证。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星哥玩云

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值