re模块
目录
re模块
这个模块提供了与 Perl 语言类似的正则表达式匹配操作。
模式和被搜索的字符串既可以是 Unicode 字符串 (str) ,也可以是8位字节串 (bytes)。 但是,Unicode 字符串与8位字节串不能混用:也就是说,你不能用一个字节串模式去匹配 Unicode 字符串,反之亦然;类似地,当进行替换操作时,替换字符串的类型也必须与所用的模式和搜索字符串的类型一致。
用法
re.findall(pattern,string,flags=0)
贪婪匹配,将匹配到的每个字符串放进一个列表中,返回该列表,按匹配到的顺序排列,没有匹配到的内容则返回空列表。
import re
res = re.findall('l.*l','Hello world!')
res1 = re.findall('l.*l','H!')
print(res)
print(res1)
['llo worl']
[]
要让.
能匹配换行符,可在方法内加一个参数re.S
。
re.findall('a.b','a\nb',re.S) # 等同于re.DOTALL
['a\nb']
re.search(pattern,string,flags=0)
扫描整个字符串返回匹配到的第一个位置的匹配对象,如果没有匹配,就返回None。
import re
res = re.search('l.*l','Hello world!')
res1 = re.search('l.*l','H!')
print(res)
print(res1)
<re.Match object; span=(2, 10), match='llo worl'>
None
使用group()
方法可显示匹配到的字符串,如果有多个参数,结果就是一个元组。
print(res.group())
llo worl
re.compile(pattern,flags=0)
将正则表达式编译为一个正则对象,通过这个对象的search()
和match()
方法,可复用匹配规则。
pattern = re.compile('o.*o')
res = pattern.search('Hello world!')
res1 = pattern.search('Hello Python')
print(res.gronp())
print(res1.group())
o wo
o Pytho
参考文档
https://docs.python.org/zh-cn/3/library/re.html?highlight=re#module-re