正则表达式(Regular Expression)是一种强大的文本处理工具,用于匹配、查找、替换或提取符合特定模式的字符串。在Python中,我们使用内置的re
模块来实现正则表达式的功能:
目录
一、正则表达式的匹配过程
正则表达式的匹配过程可以简化为以下几个关键步骤:
- 编译:将用户编写的正则模式字符串转换为内部可执行结构(如自动机)。
- 初始化:在目标字符串上设定初始匹配位置。
- 状态转移:遍历目标字符串的字符。根据当前内部状态和字符,按自动机规则移动到下一个状态。
- 处理量词:对于重复次数不确定的子表达式(如*、+、?、{m,n}),尝试不同次数的匹配。
- 捕获分组:记录括号内子表达式匹配到的子串。
- 断言:检查特定位置是否满足额外条件,不影响匹配结果但影响匹配过程。
- 判定结果:若能完整遍历目标字符串且到达接受状态,匹配成功。否则,匹配失败。
- 全局搜索(可选):寻找目标字符串中所有匹配项,重复上述过程。
简单来说,正则表达式匹配就是将模式字符串编译为内部结构,然后在目标字符串上按照特定规则逐字符移动并处理量词、捕获分组、断言等,直至找到符合模式的子串或判定为不匹配。对于全局搜索,会在目标字符串中重复此过程以查找所有匹配项。
二、Python中使用正则表达式的基本步骤
1、导入re模块
import re
2、编译正则模式
使用re.compile()
函数将一个字符串形式的正则表达式编译成一个可重用的模式对象。这一步不是必需的,但有助于提高效率,尤其是在多次使用同一模式时。
pattern = re.compile(r'定义需要匹配的字符串')
3、应用模式
使用模式对象的方法来执行匹配操作,常见的方法有:
mach() | 从字符串起始位置尝试匹配 |
search() | 在整个字符串中搜索首次出现的匹配项 |
findall() | 返回所有非重叠的匹配项组成的列表 |
finditer() | 返回一个迭代器,生成所有非重叠匹配项的对象(每个对象包含匹配信息) |
fullmach() | 只有整个字符串完全匹配时才返回成功 |
split() | 根据模式分割字符串 |
sub() | 替换字符串中所有(或指定次数)的匹配项 |
如需了解更多请参阅re文档:re --- 正则表达式操作 --- Python
匹配对象实例也有几个方法和属性,最重要的是:
方法 / 属性 |
目的 |
|
返回正则匹配的字符串 |
|
返回匹配的开始位置 |
|
返回匹配的结束位置 |
|
返回包含匹配 (start, end) 位置的元组 |