正则表达式编译和DOTALL模式
re.compile()
#!/usr/bin/python3 # -*- coding: utf-8 -*- import re string = '123abc' string_list = ["123abc","123abc123"] # print(re.findall('\d+',string)) # pattern = re.compile('\d+') #1. 编译生成匹配规则 # print(pattern.findall(string)) # 2. 匹配数据 pattern = re.compile('\d+') for string in string_list: print(pattern.findall(string))
- re.findall ==> 1. 编译生成匹配规则 2. 匹配数据
会创建上下文环境,吃性能和内存 - re.compile()创建匹配规则,可以重复利用
DOTALL模式
- re.DOTALL == re.S == re.RegexFlag.DOTALL == re.RegexFlag.S
#!/usr/bin/python3 # -*- coding: utf-8 -*- import re string = ''' abcd abcd ''' pattern = re.compile('a(.*?)d') # 非贪婪 ['bc', 'bc'] pattern = re.compile('a(.*)d') # 贪婪 ['bc', 'bc'] pattern = re.compile('a(.*)d',re.RegexFlag.S) # DOTALL模式 ['bcd\n abc'] print(pattern.findall(string))
- (.*) 贪婪模式 -> 尽可能多的匹配
- (.*?) 非贪婪模式 -> 一旦匹配
- . 匹配的除‘\n‘以外所有字符,设置 DOTALL模式,让 . 匹配包括 ‘\n‘ 所有字符
相关推荐
flyingssky 2020-08-18
wangzhaotongalex 2020-10-20
wyq 2020-11-11
TLROJE 2020-10-26
风雨断肠人 2020-10-13
duanqingfeng 2020-09-29
rechanel 2020-11-16
cshanzhizi 2020-10-16
luofuIT成长记录 2020-09-22
phphub 2020-09-10
taomengxing 2020-09-07
MaggieRose 2020-08-19
山水沐光 2020-08-18
jyj00 2020-08-15
AHuqihua 2020-08-09
山水沐光 2020-08-03