首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Python自学22 - 正则表达式的应用

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

原创
作者头像
星哥玩云
发布2025-09-30 15:45:06
发布2025-09-30 15:45:06
1380
举报
文章被收录于专栏:python自学成菜python自学成菜

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. 匹配邮箱

代码语言:javascript
复制
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())

输出:

代码语言:javascript
复制
找到邮箱: test_user123@example.com

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

代码语言:javascript
复制
pattern = r"^1[3-9]\d{9}$"
print(bool(re.match(pattern, "13812345678")))  # True
print(bool(re.match(pattern, "123456")))       # False

3. 提取日志中的 IP

代码语言:javascript
复制
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. 文本替换

代码语言:javascript
复制
text = "今天的价格是100元,明天的价格是200元"
pattern = r"\d+"
​
new_text = re.sub(pattern, "XXX", text)
print(new_text)

输出:

代码语言:javascript
复制
今天的价格是XXX元,明天的价格是XXX元

五、技巧与建议

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

六、总结

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Python自学22 - 正则表达式的应用
    • 一、为什么要学正则表达式?
    • 二、Python 中的正则模块
    • 三、常见正则表达式语法
    • 四、实战案例
      • 1. 匹配邮箱
      • 2. 验证手机号(中国大陆)
      • 3. 提取日志中的 IP
      • 4. 文本替换
    • 五、技巧与建议
    • 六、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档