一、re模块
re模块
查找相关的方法:
-
match:查找字符串,返回的结果是一个re.Match对象
- search和match方法的执行结果是一个Match类型的对象
-
search:查找字符串,返回的结果是一个re.Match对象
- search和match方法的执行结果是一个Match类型的对象
match和search共同点:
- 只对字符串查询匹配一次,对于一个字符串中多个匹配的字符,按从左至右且只匹配一次的规则
- 返回值都是re.Match类型的对象
match和search不同点:
- match是从开头第一个字符串进行匹配,一旦匹配失败,就会返回None
- search是在整个字符串中进行匹配,对于单个字符串匹配失败,会查询下一个字符串,直到匹配成功,如果失败则返回None
- finditer:finditer可以查找到所有的匹配数据,存放到一个可迭代对象中,未匹配则输出None
- findall:findall将所有匹配的数据放入到一个列表中,未匹配则输出None
- fullmatch:fullmatch匹配整个字符串,字符串需要完全满足正则匹配规则,未匹配则输出None
注意:
- Python中使用正则表达式匹配一个
\
需要使用\\\\
来代表,或者使用r'\\'
来代表
match()
- match是从开头第一个字符串进行匹配,一旦匹配失败,就会返回None
- search和match方法的执行结果是一个Match类型的对象
- 语法:
import re
re.match('参数1','参数2')
第一个参数就是正则匹配规则
第二个参数表示匹配的字符串
- 案例:
import re
m = re.match(r'hel','hello world good morning')
print(m)
#<re.Match object; span=(0, 3), match='hel'>
m3 = re.match(r'good','hello world good morning')
print(m)
#None
search()
- search是在整个字符串中进行匹配,对于单个字符串匹配失败,会查询下一个字符串,直到单个匹配成功,如果失败则返回None
- search和match方法的执行结果是一个Match类型的对象
- 语法:
import re
re.search('参数1','参数2','参数3')
第一个参数就是正则匹配规则
第二个参数表示匹配的字符串
第三个参数表示正则修饰符
- 案例:
import re
x = 'hello\\nworld' #输出结果为:hello\nworld
#在正则表达式中,想要匹配一个 \ 需要使用 \\\\
m = re.search('\\\\',x)
print(m)
#<re.Match object; span=(5, 6), match='\\'>
span:被匹配的字符所在字符串中的下标,包含5不包含6
match:输出匹配的结果,在python中需要使用 \\ 表示 \
m2 = re.search(r'good','hello world good morning')
print(m2)
#<re.Match object; span=(12, 16), match='good'>
finditer()
- finditer返回的是一个可迭代对象,需要使用next()方法来输出该可迭代对象中的值
- finditer可以查找到所有的匹配数据,存放到一个可迭代对象中,未匹配则输出None
- 语法:
import re
re.finditer('参数1','参数2')
第一个参数就是正则匹配规则
第二个参数表示匹配的字符串
- 案例
import re
print(re.finditer(r'x','xk2adsxkdwadawx'))
#<callable_iterator object at 0x000002210FA50970>
print(next(x))
print(next(x))
print(next(x))
'''
<re.Match object; span=(0, 1), match='x'>
<re.Match object; span=(6, 7), match='x'>
<re.Match object; span=(14, 15), match='x'>
'''
findall()
findall将所有匹配的数据放入到一个列表中,未匹配则输出None
- 语法:
import re
re.findall('参数1','参数2')
第一个参数就是正则匹配规则
第二个参数表示匹配的字符串
- 案例:
import re
print(re.findall(r'x','xk2adsxkdwadawx'))
#['x', 'x', 'x']
fullmatch()
fullmatch匹配整个字符串,字符串需要完全满足正则匹配规则,未匹配则输出None
- 语法:
import re
re.fullmatch(''参数1','参数2'')
第一个参数就是正则匹配规则
第二个参数表示匹配的字符串
- 案例:
import re
print(re.fullmatch(r'hello world','hello world'))
#<re.Match object; span=(0, 11), match='hello world'>