Python3 正则表达式(1)——match&&seach的区别

1、首先看match和search的区别,每个print对应的输出在注释中标明。

import re
'''
在Python的string前面加上‘r’, 是为了告诉编译器这个string是个raw string,不要转意backslash "\" 。 "\n" 在raw string中,
是两个字符,"\"和"n",而不会转意为换行符。由于正则表达式和"\"会有冲突,因此,当一个字符串使用了正则表达式后,最好在前面加上'r'。
'''
'''
re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;
而re.search匹配整个字符串,直到找到一个匹配。
'''
email = 'Cedar_Sia@test1.com'
p1 = r'@test1\.com'
p2 = r'Cedar'
print('p1',p1)# p1 @test1\.com
print('p2',p2)# p2 Cedar
m = re.search(p1, email)
print("search",m)
print("search.group:",m.group())
print("search.groups:",m.groups())# 
print("search.start", m.start())#起始位置
print("search.end", m.end())#结束位置
print("search.length",m.span())#跨度
'''
search <re.Match object; span=(9, 19), match='@test1.com'>
search.group: @test1.com
search.groups: ()
search.start 9
search.end 19
search.length (9, 19)
'''
m = re.match(p1, email)
print("match p1:",m)
m = re.match(p2, email)
print("match p2:",m)
print("match.group:",m.group())
print("match.groups:",m.groups())
print("match.start", m.start())#起始位置
print("match.end", m.end())#结束位置
print("match.length",m.span())#跨度
'''
match p1: None
match p2: <re.Match object; span=(0, 5), match='Cedar'>
match.group: Cedar
match.groups: ()
match.start 0
match.end 5
match.length (0, 5)
'''

2、关于group和groups:
查阅的资料说明如下:
group(num=0) 匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。
groups() 返回一个包含所有小组字符串的元组,从 1 到 所含的小组号。
group(0)和group()效果相同,均为获取取得的字符串整体。

p2 = r'(\d)(\s)([a-z])'#加()是对正则表达式分组,代表数字是第一组、空格是第二组、字母是第三组
message2 = '3 a'
m = re.search(p2, message2)
print('数字空格字母:', m)#
group1 = m.group(1)#第一组数字
print(group1)
group1 = m.groups()#相当于m.groups() == (m.group(0), m.group(1), ...)
print(group1)
print(type(group1))
'''
数字空格字母: <re.Match object; span=(0, 3), match='3 a'>
3
('3', ' ', 'a')
<class 'tuple'>
'''
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值