一、初识正则表达式
为了使计算机具有在文本中检索某种模式的能力,我们引入了正则表达式。
正则表达式为高级的文本模式匹配、抽取或者文本形式的搜素和替换功能提供了基础。利用正则表达式能够匹配多个字符串。
正则表达式的强大之处在于引入了特殊字符来定义字符集、匹配子组和重复模式。由于有了这些特殊符号,正则表达式可以匹配字符串集合,而不仅仅是某单个字符串。
特点:
灵活性、功能性、逻辑性强
可以用简单的方式对字符串实现复杂控制
二、正则匹配规则
∙
\bullet
∙ 数字和字母都表示它本身
∙
\bullet
∙ 很多字母前加 \ 会有特殊含义
∙
\bullet
∙ 绝大多数标点符号都有特殊含义,需要用加 \
三、正则匹配模式
∙ \bullet ∙ 特殊符号的含义
表示法 | 描述 | 示例 | 结果 |
---|---|---|---|
liter | 匹配文本字符串的字面值 | foo | foo |
re1 I re2 | 匹配正则表达式re1或者re2 | aIb | a或者b |
. | 匹配任意字符(除\n) | 俩a间插入任意字符 | |
^ | 匹配字符串起始部分 | ||
$ | 匹配字符串结束部分 | ||
* | 匹配0次或多次前面出现的正则表达式 | ||
? | 匹配1次或多次前面出现的正则表达式 | ||
+ | 匹配0次或1次前面出现的正则表达式 | ||
{N} | 匹配N次前面出现的正则表达式 | [0-9]{3} | 任意三位数 |
{N,M} | 匹配N~M次前面出现的正则表达式 | [0-9]{3,5} | 任意三位数或四位数或五位数 |
{N,} | 匹配N次以上前面出现的正则表达式 | ||
{,N} | 匹配N次及以下前面出现的正则表达式 | ||
[…] | 匹配来自字符集的任一字符 | ||
[.x-y…] | 匹配x-y范围的任一字符 | ||
[^…] | 不匹配此字符集中的任意字符 | ||
(…) | 匹配封闭的正则表达式,然后另存为子组 | ||
() | 表示一个分组 |
∙ \bullet ∙ 特殊字母的含义
表示法 | 描述 | 示例 | 结果 |
---|---|---|---|
\d | 匹配任意十进制数字,等同[0-9],\D表示不匹配数字 | ||
\w | 表示匹配数字字母字符和 _, \W相反 | ||
\s | 表示匹配任意非打印字符,如空格字符,\S匹配非空白字符 | ||
\b | 匹配任何单词边界 | ||
\t | 表示一个制表符 |
四、re模块
4.1查找相关方法
方法名 | 描述 | 格式 |
---|---|---|
match | 从头 查找字符串,返回一个对象,匹配失败返回None | match(pattern, string, flags=0) pattern为正则匹配规则,flag为正则修饰符 |
search | 查找整个字符串,返回一个对象,匹配失败返回None | search(pattern, string, flags=0) |
finditer | 查找所有的匹配数据,finditer返回的结果是一个可迭代对象,里面的数据都是匹配到的结果,也是对象 | finditer(pattern, string, flags=0) |
findall | 把查找的的所有字符串结果放到一个列表里 | findall(pattern, string, flags=0) |
findmatch | 从头完整匹配,失败为None | findmatch(pattern, string, flags=0) |
4.2 替换(sub)
(pattern, repl, string, count=0, flags=0) # repl表示替换后的字符或函数,count表示替换次数
- 1
如果repl为一个函数,sub内部会自动调用该函数并传参,参数为每一个匹配到的格式的数据
4.2 类
方法和属性 | 描述 |
---|---|
pos | 搜索开始的位置 |
enpos | 搜索结束的位置 |
string | 搜索的字符串 |
re | 当前使用的正则表达式的对象 |
lastindex | 最后匹配的组索引 |
lastgroup | 最后匹配的组名 |
group(index=0) | 某个分组匹配的结果。index=0,匹配整个正则表达式 |
groups() | 所有分组的匹配结果,为列表类型 |
groupdict() | 返回组名为key,每个分组的匹配结果为value的字典 |
start([ ]) | 获取组的开始位置 |
end([ ]) | 获取组结束的位置 |
sapn([ ]) | 获取组的开始和结束位置 |
expand(template) | 使用组的匹配结果来替换template的内容,并把替换后的字符串返回 |
4.3 类
使用方法:
a = (正则规则) # a为Pattern对象
b = (要匹配的字符串1)
c = (要匹配的字符串2)
- 1
- 2
- 3
五、正则修饰符
正则修饰符 | 描述 |
---|---|
让 . 匹配换行 | |
忽略大小写 | |
让$ 匹配到换行 |
六、贪婪模式和非贪婪模式
在正则模式里会默认尽可能匹配更多的字符串,即贪婪模式。在贪婪模式会加 ?会切换到非贪婪模式。