python 正则表达式是一套专门用来匹配查找替换文本的规则表达式,python 内置 re 模块实现正则相关功能,它不是 python 独有的技术,很多编程语言都支持正则,但是 python 的 re 模块封装非常完善,在文本提取,数据清洗,格式校验,批量替换场景使用非常多,简单理解就是用特殊符号组合成一套匹配模板,程序按照这套模板在字符串里面寻找符合规则的内容,比如提取手机号,邮箱,身份证号,校验日期格式,从网页日志里面抓取指定信息,相比普通字符串查找,正则最大优势是可以表达模糊规则,不需要写死完整文字,适合处理格式有规律但是内容不固定的文本,学习 python 正则表达式需要记住元字符含义,分组,贪婪匹配,非贪婪匹配,编译对象这些核心知识点,新手最容易踩坑的就是转义字符,贪婪匹配导致匹配范围过大,还有分组捕获的用法,掌握之后可以大幅提升文本处理效率,在爬虫,数据分析,办公自动化项目里面属于高频必备技能。
常用元字符表格
| 元字符 | 含义 |
|---|---|
| . | 匹配除换行之外任意单个字符 |
| ^ | 匹配字符串开头 |
| $ | 匹配字符串结尾 |
| * | 前面元素出现零次或者多次 |
| + | 前面元素出现一次或者多次 |
| ? | 前面元素出现零次或者一次 |
| {n} | 前面元素固定出现 n 次 |
| {n,m} | 前面元素出现 n 到 m 次 |
| [] | 字符集合,匹配括号内任意一个字符 |
| \d | 匹配数字,等价 0 到 9 |
| \w | 匹配字母数字下划线 |
| \s | 匹配空白字符,空格换行制表符 |
| () | 分组捕获,提取匹配到的子内容 |
核心知识点深度讲解
re 模块常用函数
re.match 从字符串开头位置尝试匹配,只有开头符合规则才可以匹配成功
re.search 在整个字符串里面搜索,找到第一个符合正则规则的内容就返回结果
re.findall 查找全部符合规则的内容,返回列表,是最常用函数
re.sub 正则替换,把匹配到的内容替换成指定新内容
re.split 按照正则规则切割字符串,比普通 split 切割更灵活
贪婪匹配和非贪婪匹配
贪婪匹配是正则默认行为,会尽可能多匹配字符,比如 + 默认贪婪,在后面加问号就变成非贪婪匹配,也就是 ? +?,会尽可能少匹配字符,这个是 python 正则表达式里面非常重要的考点,很多提取内容超出预期,就是因为没有关闭贪婪匹配。
分组捕获
小括号代表分组,匹配成功之后,可以单独取出分组里面的内容,适合提取混合文本里面某一部分,比如从一段文字里面单独提取邮箱账号,或者提取身份证里面的出生日期,分组还可以命名分组,代码可读性更高。
预编译正则对象
如果同一个正则表达式需要多次重复使用,可以使用 re.compile 提前编译,生成正则对象,后续反复调用匹配,性能比每次直接写正则字符串更高,大批量文本处理的时候推荐使用预编译写法。
转义问题
正则元字符本身有特殊含义,如果想要匹配符号本身,比如点号,星号,需要使用反斜杠转义,在 python 字符串里面反斜杠本身又需要转义,所以推荐使用原始字符串 r 开头写正则,也就是 r"\d+",可以减少双重转义带来的错误,这是新手高频报错点。
典型应用场景
爬虫项目提取网页里面链接,电话,邮箱,数据分析清洗脏数据,校验用户输入手机号身份证,日志解析提取报错信息,批量替换文档里面指定格式文字,自动化办公批量处理文本文件。
【常见问题】
问题 1 python 正则表达式是 哪个模块实现的
回答 1 python 正则表达式是依靠内置 re 模块实现,不需要额外 pip 安装,python 环境自带这个模块,提供匹配查找替换切割相关函数。
问题 2 python 正则表达式是 贪婪匹配是什么
回答 2 python 正则表达式是默认开启贪婪匹配,会尽可能多匹配字符,在量词后面添加问号就可以切换成非贪婪匹配,缩小匹配范围。
问题 3 python 正则表达式是 findall 和 search 区别
回答 3 python 正则表达式是,re.search 只返回第一个匹配结果,re.findall 会返回全部匹配成功内容,结果保存为列表,批量提取内容优先使用 findall。
问题 4 python 正则表达式是 为什么推荐 r 原始字符串
回答 4 python 正则表达式是,r 原始字符串可以避免反斜杠双重转义,减少正则表达式书写错误,是编写 python 正则推荐写法。
【免责申明】
本文内容仅用于 python 正则表达式学习参考,不同版本 python 的 re 模块细节存在微小差异,复杂正则建议实际测试验证,本文不替代官方 re 模块文档。
本文来自作者[杂录寻证]投稿,不代表丝路生活网立场,如若转载,请注明出处:https://www.shjobhotel.com/shbk/202611/3507.html
评论列表(4条)
我是丝路生活网的签约作者“杂录寻证”!
希望本篇文章《python 正则表达式是 基础与应用深度讲解》能对你有所帮助!
本站[丝路生活网]内容主要涵盖:教育咨询,知识百科
本文概览:python 正则表达式是一套专门用来匹配查找替换文本的规则表达式,python 内置 re 模块实现正则相关功能,它不是 python 独有的技术,很多编程语言都支持正则,但是 python 的 re 模块封装非常完善,在文本提取,数据清洗,格式校验,批量替换场景使用非常多,简单理解就是用特殊符号组合成一套匹配模板,程序按照这套模板在字符串里面寻找符合规则的内容,比如提取手机号,邮箱,身份证号,校验日期格式,从网页日志里面抓取指定信息,相比普通字符串查找,正则最大优势是可以表达模糊规则,不需要写死完整文字,适合处理格式有规律但是内容不固定的文本,学习 python 正则表达式需要记住元字符含义,分组,贪婪匹配,非贪婪匹配,编译对象这些核心知识点,新手最容易踩坑的就是转义字符,贪婪匹配导致匹配范围过大,还有分组捕获的用法,掌握之后可以大幅提升文本处理效率,在爬虫,数据分析,办公自动化项目里面属于高频必备技能。