Loading

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

posted @ 2021-01-14 16:42  吃了好多肉  阅读(73)  评论(0编辑  收藏  举报