re模块断言

对于xxx这种格式当我们想要获取title的标题内容的时候,方法一是通过的括号分组实现,宁外一种方法就是断言

pattern = re.compile(‘(?<=title>).*(?=)’)
re.findall(pattern,’xxx‘)

断言条件 解释
(?=exp) 匹配exp前面的位置
(?!exp) 匹配后面跟的不是exp的内容
(?<=exp) 匹配exp后面的内容
(?<!exp) 匹配前面不是exp的位置
(?:exp) 匹配exp,不捕获匹配的文本,也不给此分组分配组号
(exp) 匹配exp,并捕获文本到自动命名的组里

匹配exp前面后匹配exp后面的可以一起使用,这样就可以获取到中间的数据了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
.   表示一切字符
\ 起转义作用
[...] 方括号中的任意字符
\d 数字0-9
\D 非数字
\w 数字,字母,下划线
\W 非数字,字母下划线
\s 空格换行符等
\S 非空格
* 前面字符>=0
+ >=1
? 0或1
{m} 匹配m次
{m,n} 匹配m到n次
{m,} 至少匹配m次
re模块字符串匹配
1
2
3
4
5
6
7
方式1 :re.findall(r'([a-z]):',s1,re.I)   #匹配获得所有括号内的内容,re.I表示不分大小写
方式2 :patten = re.compile(r'\d+')
patten.findall(s1)
s = 'sim@163.com work-da intrest:pingpang'
re.split('[@\-:\s+]',s)
返回结果: ['sim', '163.com', 'work', 'da', 'intrest', 'pingpang']
re.sub('1.5[lLtT]','1.5L',s) #将1.5l,1.5t,1.5T全部替换为1.5L