上一篇
Python正则表达式(re)教程:字符匹配与文本处理的强大工具 | Python编程指南
- Python
- 2025-07-16
- 1485
Python正则表达式(re)教程
掌握字符匹配与文本处理的强大工具
什么是正则表达式(re)?
正则表达式(Regular Expression, 简称regex或re)是一种强大的文本处理工具,它使用特定模式的字符串来描述、匹配和操作文本。在Python中,我们通过内置的re
模块来使用正则表达式。
核心概念:
- 模式(Pattern): 定义搜索规则的字符串
- 匹配(Match): 在目标字符串中找到符合模式的内容
- 元字符(Metacharacters): 具有特殊含义的字符,如
.
,*
,+
,?
等
为什么需要正则表达式?
正则表达式在文本处理中不可或缺,主要原因包括:
高效文本搜索
快速查找复杂模式的字符串,比普通字符串方法更强大
数据验证
验证用户输入(邮箱、电话、密码格式等)
数据提取
从文本中提取结构化信息(日志分析、网页抓取)
文本替换
批量修改文本内容(格式转换、敏感信息过滤)
Python re模块核心函数
函数 | 描述 | 返回值 |
---|---|---|
re.match() |
从字符串起始位置匹配模式 | 匹配对象或None |
re.search() |
扫描整个字符串查找匹配 | 匹配对象或None |
re.findall() |
查找所有匹配的子串 | 字符串列表 |
re.finditer() |
查找所有匹配的子串 | 迭代器(匹配对象) |
re.sub() |
替换匹配的子串 | 替换后的字符串 |
re.split() |
根据模式分割字符串 | 分割后的列表 |
常用正则表达式元字符
字符 | 描述 | 示例 |
---|---|---|
. |
匹配任意单个字符(换行符除外) | p.t → pat, pbt, p@t |
\d |
匹配数字 [0-9] | \d{3} → 123, 000, 789 |
\w |
匹配字母数字下划线 [a-zA-Z0-9_] | \w+ → hello, Python3, user_name |
\s |
匹配空白字符(空格、制表符等) | \s+ → " ", "\t" |
^ |
匹配字符串开头 | ^Hello → Hello world |
$ |
匹配字符串结尾 | world$ → Hello world |
* |
匹配0次或多次 | ab*c → ac, abc, abbc |
+ |
匹配1次或多次 | ab+c → abc, abbc |
? |
匹配0次或1次 | ab?c → ac, abc |
{n} |
匹配n次 | \d{4} → 2023, 1234 |
| |
或操作 | cat|dog → cat, dog |
[] |
字符集 | [aeiou] → 匹配任何元音字母 |
Python正则表达式实战示例
示例1:验证电子邮件格式
import re
def validate_email(email):
pattern = r'^[\w\.-]+@[\w\.-]+\.\w+$'
return re.match(pattern, email) is not None
# 测试
emails = ["user@example.com", "invalid.email", "name@domain.org"]
for email in emails:
print(f"{email}: {validate_email(email)}")
示例2:提取电话号码
import re
text = "联系我们:电话 010-12345678 或 021-87654321,紧急联系 13900112233"
pattern = r'\b\d{3,4}-\d{7,8}\b|\b1[3-9]\d{9}\b'
phones = re.findall(pattern, text)
print("提取的电话号码:", phones) # 输出: ['010-12345678', '021-87654321', '13900112233']
示例3:替换敏感信息
import re
text = "Visa卡号: 4111 1111 1111 1111 有效期12/25, Master卡: 5500 0000 0000 0004"
pattern = r'\b(?:\d{4}[ -]?){3}\d{4}\b'
# 替换信用卡号
secured_text = re.sub(pattern, "****-****-****-****", text)
print(secured_text)
正则表达式最佳实践
提示: 编写正则表达式时,清晰性和可维护性比简洁性更重要
- 使用原始字符串(前缀r)避免转义问题:
r"\d+"
- 复杂的正则表达式添加注释:
re.VERBOSE
标志 - 预编译常用模式:
pattern = re.compile(r'\d{4}')
- 使用非贪婪匹配(*?、+?)避免过度匹配
- 测试正则表达式:使用在线工具如regex101.com
- 考虑边界情况:空字符串、特殊字符、Unicode字符
掌握正则表达式,提升文本处理能力
正则表达式是每个Python开发者必备的强大工具。虽然学习曲线较陡峭,但一旦掌握,将极大提升你的文本处理能力。从数据清洗到日志分析,从表单验证到文本挖掘,正则表达式无处不在!
开始在你的项目中实践正则表达式,体验它带来的效率提升吧!
本文由JiHuiZhen于2025-07-16发表在吾爱品聚,如有疑问,请联系我们。
本文链接:http://pjw.521pj.cn/20255700.html
发表评论