
在 Python 自学之旅中,正则表达式是处理字符串的 “瑞士军刀”。经过前面章节对正则表达式基础语法的学习,本节课我们将聚焦其在 Python 中的实际应用,通过re模块的核心函数,解决字符串匹配、提取、替换等常见问题,让你真正将正则表达式运用到项目开发中。
在进入应用前,先快速回顾正则表达式的核心要素(避免遗忘基础):
正则表达式的核心价值是 “用简洁的语法描述复杂的字符串规则”,而 Python 的re模块则是实现这一价值的工具。
在文本处理、数据清洗、日志分析、爬虫开发等场景中,我们经常需要从一大段文字中提取特定信息。 例如:
如果用普通字符串方法(split、find、replace),代码会很冗长。 而 正则表达式(Regular Expression, regex) 提供了一种强大而简洁的方式来匹配和操作文本。
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() :分组,提取子串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.compattern = r"^1[3-9]\d{9}$"
print(bool(re.match(pattern, "13812345678"))) # True
print(bool(re.match(pattern, "123456"))) # Falselog = "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())text = "今天的价格是100元,明天的价格是200元"
pattern = r"\d+"
new_text = re.sub(pattern, "XXX", text)
print(new_text)输出:
今天的价格是XXX元,明天的价格是XXX元() 提取子串,结合 group() 使用。re.compile() 提高性能。re 模块提供了完整的正则支持。原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。