#用来处理字符串,对字符串进行检索和替换
#1、查找 2、替换
import re
x='hello\\nworld'
print(x) #hello\nworld
#第一个参数就是正则匹配规则
#第二个参数表示需要匹配的字符串
#在正则表达式里,如果想要匹配一个 \ 需要 \\\\
m = re.search('\\\\',x)
#在正则表达式里,还可以在字符串前面加r,\\就表示 \
re.search(r'\\',x)
# search和match方法的执行结果是一个match类型的对象
print(m) #<re.Match object; span=(5, 6), match='\\'>y
#正则查找相关内容
#match和search :
#共同点:1、只对字符串查询一次 2、返回值类型都是re.match类型的对象
#不同点:match 是从头开始匹配,一旦匹配失败,就返回None;search是在整个字符串里匹配
#finditer:查找所有的匹配数据放到一个可迭代对象里
# 返回的结果是一个可迭代对象,对象里的数据是匹配到的所有结果,是一个re.match类型的对象
#需要for循环打印
#findall:把查找到的所有字符串结果放在一个列表里
#fullmatch:完整匹配,字符串要完全满足正则规则才会有结果,否则就是None
m1 = re.match(r'hello','hello world good morning')
print(m1) #<re.Match object; span=(0, 5), match='hello'>
m2 = re.match(r'good','hello world good morning')
print(m2) #None
m3 = re.search(r'hello','hello world good morning')
print(m3) #<re.Match object; span=(0, 5), match='hello'>
m4 = re.search(r'good','hello world good morning')
print(m4) #<re.Match object; span=(12, 16), match='good'>
#span 匹配到的结果字符串的开始和结束下标
#group可以获取匹配的字符串结果,可以传参,表示第n个分组
#1、在正则表达式里使用( )表示一个分组
#2、如果没有分组,默认只有一个分组
#3、分组的下标从0开始
# .表示任意字符 *表示出现任意次数
#以下正则表达式有四个分组
m1 = re.search(r'(9.*)(0.*)(7.*5)','fjifj9jjfuj0ifjfj7jfjfjhyg5hdhwfun')
print(m1.group(0)) #第0组就是把整个正则表达式当做一个整体 9jjfuj0ifjfj7jfjfjhyg5
print(m1.group()) #默认就是拿第0组
print(m1.group(1)) #9jjfuj
print(m1.group(2)) #0ifjfj
print(m1.group(3)) #7jfjfjhyg5
print(m1.groups()) #('9jjfuj', '0ifjfj', '7jfjfjhyg5')
#(?P<name>表达式) 可以给分组起一个名字
s = re.search(r'(9.*)(?P<name>0.*)(7.*5)','fjifj9jjfuj0ifjfj7jfjfjhyg5hdhwfun')
print(s.groupdict()) #{'name': '0ifjfj'}
Python正则表达式(1)
最新推荐文章于 2021-11-10 12:53:57 发布