【python技巧】文本处理-re库字符匹配

目录

  • [1. 正则表达式](#1. 正则表达式)
    • [1.1 测试工具](#1.1 测试工具)
    • [1.2 限定符](#1.2 限定符)
    • [1.3 字符集](#1.3 字符集)
    • [1.4 运算符](#1.4 运算符)
    • [1.5 元字符](#1.5 元字符)
    • [1.6 懒惰匹配和贪婪匹配](#1.6 懒惰匹配和贪婪匹配)

我们读取文件内容,肯定不是单纯为了输出或者重新写入,对于文本我们一定有一些查找、定位的需求。
在Python中,还有一个专门用于文本处理的库,那就是re库。
下面我会介绍re库涉及的正则表达式的基本知识。
参考课程

1. 正则表达式

正则表达式是用来进行字符串匹配的一个字符形式。

1.1 测试工具

常见的正则表达式测试工具有:

  1. regex101
  2. 代码编辑器搜索栏的正则表达式匹配

1.2 限定符

  1. ?
    abc?表示字符c需要出现0次或者1次,或者换句话说,字符c至多出现一次。也就是说,abc?相当于abcab这两个字符串。

  2. *
    ab*c表示字符b需要出现0次或者多次,或者换句话说,字符b可以出现任意多次。也就是说,ab*c相当于acabcabbcab......bc等多个字符串。

  3. +
    ab+c表示字符b需要出现1次或者多次,或者换句话说,字符b至少出现一次。也就是说,ab+c相当于abcabbcab......bc等多个字符串。

    注意ab*cab+c的细微区别。

  4. {}

  • {num}
    ab{3}c表示字符b需要出现3次,或者换句话说,字符b只能出现2次。也就是说,ab{2}c相当于abbc这一个字符串。

  • {num1,num2}
    ab{2,5}c表示字符b需要出现2或3或4或5次,也就是说,ab{2,5}c相当于abbcabbbcabbbbcabbbbbc这四个字符串。

  • {num,}
    ab{2,}c表示字符b需要出现2次及以上,也就说,ab{2,}c相当于abbcabbbcabbbbcab......bc等无数个字符串。

1.3 字符集

在正常情况下,上述的限定符只会对其前面的一个字符起作用。如果想要某个字符串作为一个组合,可以使用字符集。
(ab)+c表示字符串ab需要出现1次或者多次,或者换句话说,字符串ab至少出现一次。也就是说,(ab)+c相当于abcababcabababcab......abc等多个字符串。

1.4 运算符

  1. |
    a(b|d)c表示字符串b出现1次或者字符串d出现1次,也就是说,a(b|d)c相当于abcadc这两个字符串。

    a(boy|girl)c也同样适用,相当于aboyc或者agirlc这两个字符。

  2. []
    []表示匹配字符能选择的范围,成为字符类,例如,[abc]+只会匹配a\b\c这三个字母出现一次或多次的字符串,而一般更经常使用的是[a-zA-Z0-9]*表示由大小写字母和数字组成的字符串,[a-zA-Z0-9_]*表示由大小写字母、数字和下划线组成的字符串。

  3. ^
    ^表示取反字符类,也就是说,[^a-zA-Z0-9]*表示除了大小写字母、数字符号以外的其他字符出现一次或多次的字符串。

  4. \
    \.表示转置,把一些有特殊意义的字符转变为实际字符

  5. \b
    \b表示字符边界

1.5 元字符

  1. \d数字字符
    1. \D非数字字符
  2. \w单词字符,包括英文字母、数字、下划线
    1. \W非单词字符
  3. \s空白字符,包括空格、制表符、换行符
    1. \S非空白字符
  4. .任意字符,不包含换行符
  5. ^匹配字符串的开头,例如^a匹配行首的a
  6. $匹配字符串的结尾,例如x$匹配行尾的x

1.6 懒惰匹配和贪婪匹配

  1. 贪婪匹配
    默认匹配尽可能多的字符。
  2. 懒惰匹配
    例子:<.+>匹配<>之间的任意字符,而<.+?>则会使用懒惰匹配
相关推荐
weixin_51344996几秒前
walk_these_ways项目学习记录第八篇(通过行为多样性 (MoB) 实现地形泛化)--策略网络
开发语言·人工智能·python·学习
飞Link5 分钟前
逆向兼容的桥梁:3to2 自动化降级工具实现全解析
运维·开发语言·python·自动化
曾阿伦13 分钟前
Python3 文件 (夹) 操作备忘录
开发语言·python
架构师老Y37 分钟前
006、异步编程与并发模型:asyncio与高性能后端
python
清水白石00839 分钟前
《解锁 Python 潜能:从核心语法到 AI 服务层架构的工业级进阶与实战》
人工智能·python·架构
kcuwu.41 分钟前
Python数据分析三剑客导论:NumPy、Pandas、Matplotlib 从入门到入门
python·数据分析·numpy
weixin_513449961 小时前
walk_these_ways项目学习记录第七篇(通过行为多样性 (MoB) 实现地形泛化)--核心环境下
人工智能·python·学习
南 阳1 小时前
Python从入门到精通day64
开发语言·python
蓝天守卫者联盟11 小时前
如何选择二氯甲烷回收设备厂家:技术路线与市场格局深度解析
大数据·人工智能·python·sqlite·tornado
蓝色的杯子1 小时前
Python面试30分钟突击掌握
python