一、正则表达式
1.正则表达式
正则表达式是处理字符串的工具,通过不同的正则符号来描述字符串的规则。
2.正则符号(正则表达式语法)
1)普通字符:除了在正则中有特殊功能和特殊意义的符号以外的字符都算普通字符;普通字符代表字符本身。
符号 | 意义 | 说明 |
---|---|---|
. | 匹配任意一个字符 | 一个点只能匹配一个字符 |
\w | 匹配一个数字、字母或者_(在ASCII码表中) | 一个\w只能匹配一个字符 |
\d | 匹配任意一个数字字符 | 匹配一个长度是5的字符串,前两个字符是任意数字,后面三个是任意字符 |
\s | 匹配任意一个空白字符 | 空白字符包括:空格字符、换行字符、制表符(\t)... |
\大写字母 | \D - 匹配除了数字字符以外的任意字符(匹配一个非数字字符) | \S - 匹配一个非空白字符 |
[字符集] | 匹配字符集中出现的任意一个字符 | 注意:一个[]只能匹配一个字符 |
[^字符集] | 匹配不在字符集中的任意一个字符 | |
\b | 检查是否是单词边界 | |
^ | 检查^所在的位置是不是字符串开头 | 这儿的^是[]外面的 |
$ | 检查$所在的位置是否是字符串结尾 |
3.字符符号二
1.控制次数的符号:字符符号
符号 | 说明 |
---|---|
* | 匹配0次或者多次 |
+ | 匹配1次或多次 |
? | 匹配0次或者1次 |
{N} | 匹配N次 |
{M,N} | 匹配M到N次(匹配至少M次最多N次) |
{M,} | 至少匹配M次 |
{,N} | 最多匹配N次 |
4.贪婪和非贪婪
在匹配次数不确定的时候,会出现贪婪和非贪婪两种情况;默认情况都是贪婪。
什么是贪婪:在能够匹配成功的前提下,匹配次数尽可能多
什么是非贪婪:在能够匹配成功的前提下,匹配次数尽可能少;(在匹配次数后面加?),例如:
*?
+?
??
5.字符符号三
1.分之: |
正则1|正则2 - 先让正则1去匹配,如果匹配成功就成功;匹配失败再让正则2去匹配;(正则1和正则2中只要有一个能匹配成功就行)。
2.分组: () - 将括号里面的内容作为一个整体
1)整体操作
r'(d\d|[A_Z]{2})abc' - 匹配一个字符串后面是abc,前面是两个数字或两个大写字母
2)分组
a.方便后面分段或者分情况取不同匹配结果
b.分组重复:在正则中用\X来重复前面第X个分组匹配到的内容
注意:\X的前面必须有这个分组
2.转义符号
方法 | 说明 |
---|---|
加\ | 在正则中有特殊功能和特殊意义的符号前加\,让这个符号的特殊功能和意义消失 |
加[] | 在[]中有特殊意义的符号有两个:a.^放在最开头 b.-放在两个字符之间其他符号包括:.+?*$,这个单独的符号在[]中都表示这个符号本身 |
6.re模块
re模块是python提供的,专门针对正则表达式应用的相关函数
1.compile(正则表达式): -> 将正则表达式转换成正则对象(了解即可)
2.字符串匹配:
fullmatch(正则表达式, 字符串) - 让正则表达式和字符串完全匹配。
match(正则表达式, 字符串) - 匹配字符串开头
以上两个方法的结果:匹配失败结果是None,匹配成功会返回匹配对象
a.获取匹配到的字符串
方法 | 说明 |
---|---|
匹配对象.group() | 获取整个正则表达式匹配到的字符串,结果是字符串 |
匹配对象.group(N) | 获取整个正则表达式中第N个分组匹配到的字符串 |
b.获取匹配到的字符串在原字符串中的位置信息
方法 | 说明 |
---|---|
匹配对象.span() | 返回匹配结果在原字符串的下标范围:[开始下标,结束下标) |
匹配对象.span(N) | 返回第N个分组匹配到的结果在原字符串的下标范围:[开始下标,结束下标) |
c.获取原字符串
方法 | 说明 |
---|---|
匹配对象.string |
3.查找
1)search(正则表达式, 字符串) - 在字符串中查找第一个满足正则表达式的子串,如果找到了,结果是匹配对象,找不到结果是None
2)findall(正则表达式, 字符串) - 获取字符串中所有满足正则表达式的子串;返回值是一个列表
注意:如果正则表达式中有分组,列表中的匹配结果只会取分组匹配到的内容
3)finditer(正则表达式, 字符串) - 获取字符串中所有满足正则表达式的子串;返回值是一个迭代器,元素是匹配对象
4.切割
split(正则表达式, 字符串) - 将字符串中满足正则表达式的子串作为切割点,对字符串进行切割;返回一个字符串列表
5.替换
sub(正则表达式,字符串1,字符串2) - 将字符串2中所有满足正则表达式的子串都替换成字符串1