上一篇
Python正则表达式字符串组成教程 - 详解元字符与re模块实战
- Python
- 2025-07-31
- 597
Python正则表达式字符串组成完全指南
一、正则表达式基础概念
正则表达式是用于匹配和处理文本的强大工具,由普通字符和特殊字符(元字符)组成。
二、re模块核心功能
Python通过re模块提供正则支持,主要函数:
- re.match() - 从字符串起始位置匹配
- re.search() - 扫描整个字符串查找匹配
- re.findall() - 返回所有匹配结果列表
- re.sub() - 替换匹配内容
- re.compile() - 预编译正则表达式
三、正则表达式组成元素
1. 普通字符
字母、数字、汉字等直接匹配自身:
regex = "python" 匹配字符串中的"python"
2. 元字符(特殊字符)
元字符 | 功能说明 | 示例 |
---|---|---|
. | 匹配任意字符(除换行符) | "p.thon" 匹配"python"或"pYthon" |
^ | 匹配字符串开头 | "^Hello" 匹配开头的"Hello" |
$ | 匹配字符串结尾 | "end$" 匹配结尾的"end" |
* | 匹配前字符0次或多次 | "py*" 匹配"p"、"py"、"pyy"等 |
+ | 匹配前字符1次或多次 | "py+" 匹配"py"、"pyy"但不匹配"p" |
? | 匹配前字符0次或1次 | "py?thon" 匹配"python"或"pthon" |
{m,n} | 匹配前字符m到n次 | "py{2,4}" 匹配"pyy"、"pyyy"、"pyyyy" |
[ ] | 匹配字符集中的任意字符 | "[Pp]ython" 匹配"Python"或"python" |
| | 或操作符 | "python|Java" 匹配"python"或"Java" |
( ) | 分组捕获 | "(py)+" 匹配"py"、"pypy"等 |
\ | 转义特殊字符 | "\." 匹配真正的点号 |
四、高级匹配技巧
1. 分组捕获
import re text = "2023-12-01" result = re.search(r"(\d{4})-(\d{2})-(\d{2})", text) print(result.groups()) # 输出:('2023', '12', '01') print(result.group(1)) # 输出:2023
2. 贪婪与非贪婪匹配
# 贪婪匹配(默认) re.findall(r"<.*>", "<div>test</div>") # 结果:['<div>test</div>'] # 非贪婪匹配(加?) re.findall(r"<.*?>", "<div>test</div>") # 结果:['<div>', '</div>']
3. 预编译正则表达式
pattern = re.compile(r"\d{3}-\d{4}") result = pattern.findall("电话:010-1234, 021-5678") print(result) # 输出:['010-1234', '021-5678']
五、完整实战示例
import re # 邮箱验证 emails = "联系:user@example.com, admin@test.org" valid_emails = re.findall(r"\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b", emails) print(valid_emails) # 输出匹配的邮箱列表 # HTML标签内容提取 html = "<h1>标题</h1><p>正文内容</p>" text_content = re.sub(r"<.*?>", "", html) print(text_content) # 输出:标题正文内容 # 数据清洗 data = "价格:¥128.50, 重量:2.5kg" numbers = re.findall(r"\d+\.?\d*", data) print(numbers) # 输出:['128.50', '2.5']
六、总结要点
- 正则表达式 = 普通字符 + 元字符
- 关键元字符:. ^ $ * + ? {} [] \ | ()
- 使用re.match/search/findall/sub进行匹配操作
- 重要概念:分组捕获、贪婪/非贪婪匹配
- 复杂正则使用re.compile提升性能
本文由HuangTaoHui于2025-07-31发表在吾爱品聚,如有疑问,请联系我们。
本文链接:https://521pj.cn/20256970.html
发表评论