Python 正则表达式指南
2024/8/5 23:02:52
本文主要是介绍Python 正则表达式指南,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、正则表达式基础
A. 正则表达式的概念与用途
正则表达式(Regular Expression)是用于文本匹配的强大工具,常用于模式搜索、替换及解析文本。Python 的 re
模块为开发者提供了便利的接口,以完成丰富多样的文本操作任务。
B. Python 中的 re 模块简介
Python 的 re
模块包含了全面的正则表达式功能,包括模式编译、匹配搜索、替换及分组等操作。通过 re
模块,开发者能够灵活运用正则表达式进行字符串处理。
C. re 模块的主要功能与方法
- 编译正则表达式:使用
re.compile()
函数将字符串转换为正则表达式对象,以便重复使用。 - 查找匹配:
re.match()
从字符串的开头匹配,re.search()
在整个字符串中搜索匹配,re.fullmatch()
确保整个字符串完全匹配。 - 检索与替换:
re.findall()
返回所有匹配项,re.finditer()
返回匹配项迭代器,re.sub()
替换匹配的文本,re.subn()
除替换外还返回替换后的字符串长度。 - 特殊字符与字符类:使用特殊字符和字符类定义模式,如
[a-z]
匹配所有小写字母,[0-9]
匹配所有数字等。
D. 正则表达式修饰符与标志
re
模块支持多种修饰符与标志,如 re.I
忽略大小写匹配,re.M
多行模式匹配,re.S
将点 .
匹配包括换行符在内的任何字符,这些特性能显著扩展正则表达式的灵活性与适用性。
二、Python 中的正则表达式应用
A. Python 关键字和特殊字符匹配
利用正则表达式识别 Python 中的关键字、特殊字符与符号,适用于代码分析与文本解析场景。
B. 查找与匹配方法
1. re.match 函数使用案例
import re pattern = 'www' print(re.match(pattern, 'www.runoob.com').span())
2. re.search 函数使用案例
import re line = "Cats are smarter than dogs" searchObj = re.search(r'(.*) are (.*?) .*', line, re.M|re.I) if searchObj: print("搜索整个字符串:", searchObj.group()) print("匹配的组1:", searchObj.group(1)) print("匹配的组2:", searchObj.group(2)) else: print("无匹配结果")
3. re.fullmatch 函数使用案例
import re line = "Cats are smarter than dogs" matchObj = re.fullmatch(r'[A-Z][a-z]* [a-z]+', line) if matchObj: print("完整匹配字符串:", matchObj.group()) else: print("不匹配")
C. 检索与替换方法
1. re.findall 函数使用案例
import re phone = "2004-959-559 # 这是一个国外电话号码" num = re.findall(r'#.*$', phone) print("电话号码是: ", num)
2. re.finditer 函数使用案例
import re line = "Cats are smarter than dogs" it = re.finditer(r"\d+", line) for match in it: print(match.group())
3. re.sub 函数使用案例
import re s = 'A23G4HFD567' print(re.sub(r'#.*$', "", s)) print(re.sub(r'\D', "", s))
4. re.subn 函数使用案例
import re def double(matched): value = int(matched.group('value')) return str(value * 2) s = 'A23G4HFD567' print(re.sub('(?P<value>\d+)', double, s))
D. 字符串分割方法
1. re.split 函数使用案例
import re sp1 = re.split('\d+', 'I5am5Superman', maxsplit=0) print(sp1)
三、正则表达式实战应用
A. 网页文本提取:解析HTML
通过正则表达式解析 HTML 代码,提取特定内容如标题、链接等。
B. 数据清洗:去除特殊字符与格式化文本
清洗数据时,去除不需要的字符、格式化文本以满足特定需求。
C. 密码验证:检查用户输入的密码是否符合规则
验证用户输入的密码是否符合特定规则,如长度、字符类型等。
D. 文件名解析:从文件路径中提取文件名与扩展名
解析文件路径,提取文件名和扩展名,便于后续处理或操作。
四、正则表达式高级技巧
A. 匹配目标与多组匹配
通过使用括号来定义子组,实现细化的匹配和文本提取。
B. 贪婪与非贪婪匹配:.* 与 .*?
采用非贪婪匹配策略以更精确地控制匹配结果。
C. 重复匹配与量词
使用量词如 *
、+
、?
来定义重复模式,提高匹配的灵活性。
五、总结与实战代码分享
A. 实战代码片段
import re html = ''' <li>排行:<span>(.*?)</span></li> <img class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="(.*?)" alt="(.*?)" /> <a title="(.*?)" href="(.*?)" class="songlist__artist">(.*)</a> <div class="songlist__time">(.*?):</div> ''' pattern = re.compile(html, re.S) data = pattern.findall(html) for d in data: print('排名:', d[0], '链接:', d[1], '歌名:', d[2], '歌手:', d[3], '歌曲链接:', d[4], '时间:', d[5])
B. 实战代码运行结果
根据具体HTML内容,输出会显示提取的排名、链接、歌名、歌手、歌曲链接和时间等信息。
C. 实战代码的说明与解释
这段代码利用正则表达式解析HTML,匹配关键元素并提取所需信息。通过理解模式匹配与分组,实现有效数据提取,适用于网页内容分析与数据抓取场景。
这篇关于Python 正则表达式指南的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-20Python编程入门指南
- 2024-12-20Python编程基础与进阶
- 2024-12-19Python基础编程教程
- 2024-12-19python 文件的后缀名是什么 怎么运行一个python文件?-icode9专业技术文章分享
- 2024-12-19使用python 把docx转为pdf文件有哪些方法?-icode9专业技术文章分享
- 2024-12-19python怎么更换换pip的源镜像?-icode9专业技术文章分享
- 2024-12-19Python资料:新手入门的全面指南
- 2024-12-19Python股票自动化交易实战入门教程
- 2024-12-19Python股票自动化交易入门教程
- 2024-12-18Python量化入门教程:轻松掌握量化交易基础知识