目录
1 正则表达式语法
1.1 行定位符
"^“表示行的开始,”$"表示行的结尾.
1.2 元字符
常用元字符
代码 | 说明 |
---|---|
. | 匹配除换行符以外到任意字符 |
\w | 匹配字母或数字或下划线或汉字 |
\s | 匹配任意的空白符 |
\d | 匹配数字 |
\b | 匹配单词的开始或结束 |
^ | 匹配字符串的开始 |
$ | 匹配字符串的结束 |
1.3 重复
常用限定符
限定符 | 说明 | 举例 |
---|---|---|
? | 匹配前面的字符零次或一次 | colou?r, 该表达式可以匹配colour和color |
+ | 匹配前面的字符一次或多次 | go+gle,该表达式可以匹配到范围从gogle到goo…gle |
* | 匹配前面的字符零次或多次 | go*gle, 该表达式可以匹配的范围从ggle到goo…gle |
{n} | 匹配前面到字符n次 | go{2}gle, 该表达式只匹配google |
{n,} | 匹配前面的字符最少n次 | go{2,}gle, 该表达式可以匹配的范围从google到goo…gle |
{n,m} | 匹配前面的字符最少n次,最多m次 | employe{0,2},该表达式可以匹配employ/employ和employee |
例如,匹配8位QQ号
^\d{8}$
1.4 字符类
例子:
[aeiou]匹配任何一个英文元音字母
[0-9]含义与\d一致
[a-z0-9A-Z]与\w一致
1.5 排除字符
^
字符
[^a-zA-Z]
用于匹配一个不是字母的字符
1.6 选择字符
选择字符(|),可以理解为"或"
(^\d{15}$)|(^\d{18}$)|(^\d{17})(\d|X|x)$
匹配身份证,可以匹配15位数字,或者18位数字.或者17位数字和最后一位是数字或X或x
1.7 转义字符
转义字符(),将特殊字符(如"." “?” ""等)变为普通的字符
[1-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}
用于匹配ip地址
1.8 分组
小括号()
(thir|four)th
1.9 在Python中使用正则表达式语法
'\\bm\\w*\\b'
匹配以字母m开头到单词
写成原生字符串,即在模式字符串前加r或R
r'\bm\w*\b'
2 使用re模块实现正则表达式操作
2.1 匹配字符串
(1) 使用match()方法进行匹配
match()方法用于从字符串的开始处进行匹配
(2) 使用search()方法进行匹配
search()方法用于在整个字符串中搜索第一个匹配的值,如果在起始位置匹配成功,则返回March对象,否则返回None
(3) 使用findall()方法进行匹配
findall()方法用于在整个字符串中搜索搜有符合正则表达式的字符串,并以列表的形式返回
re.findall(pattern, string, [flags])
参数说明:
- pattern: 表示模式字符串,由要匹配的正则表达式转换而来
- string: 表示要匹配的字符串
- flags: 可选参数,表示标志位,用于控制匹配方式,如是否区分字母大小写
import re
pattern = r'mr_\w+'
string = 'MR_SHOP mr_shop'
match = re.findall(pattern, string, re.l) # 不区分大小写
print(match) # ['MR_SHOP', 'mr_shop']
2.2 替换字符串
sub()方法用于实现字符串替换
re.sub(pattren, repl, string, count, flags)
参数说明:
- pattern: 表示模式字符串,由要匹配的正则表达式转换而来
- repl:表示替换的字符串
- string: 表示要被查找替换的原始字符串
- count: 可选参数,表示模式匹配后替换的最大次数,默认值位0,表示替换所有的匹配
- flags:可选参数,表示标志位
import re
pattern = r'(黑客)|(抓包)|(监听)|(Trojan)'
about = "我是一名程序员,我喜欢看黑客方面的图书,想研究一下Trojan"
sub = re.sub(pattern, '@_@', about)
print(sub) # 我是一名程序员,我喜欢看@_@方面的图书,想研究一下@_@
2.3 使用正则表达式分割字符串
split()方法用于实现根据正则表达分割字符串,并以列表的形式返回
re.split(pattern, string, [maxsplit], [flags])
参数说明:
- pattern: 表示模式字符串,由要匹配的正则表达式转换而来
- string: 表示要匹配的字符串
- maxsplit: 可选参数,表示最大的拆分次数
- flags: 可选参数,表示标志位,用于控制匹配方式,如是否区分字母大小写