简单总结一下python 的re模块一些问题

本文中基础知识没有介绍,只是将自己不懂的东西稍加记录,以复习记忆。

match(),finditer(),search()为一组,返回的是Match Object对象;
其拥有group()方法:

当匹配的正则表达式没有小括号时,group(0)=group(),代表整个正则表达式;
当有括号时:
group(0)=group(),其他括号按照从外向内组号增加:
import re
str='ssss2.168.1.11sssss'
p=re.compile(r'(\w+(\d+)\.)')
print(p.search(str).group())
#这是关键点:group(0)=group()=group(1):输出ssss2. 看懂了吗???
#group(2):输出2

findall()返回一个列表:

无分组就是整个匹配,这个不提;
有分组时,默认没有整体结果而是一个分组的结果,如果有多个小括号分组,将会把多个分组组合成元祖作为列表find的一项,类似下面:
re.findall(r"(\d+)@(\w+).com", content)
[('2345678', '163'), ('2345678', '163'), ('345678', '163')]
如果想匹配整个结果,2个方法:
1是将整个正则表达式小括号括起来;
2是用?:,具体请看收藏夹关于(?# ?:)等具体用法。

另外关于finditer(),返回的是迭代器,到底是啥呢?

import re
str='ssss2.168.1.11sssss'
p=re.compile(r'\.\d+')
match=p.finditer(str)
print(match)#输出结果是:<callable_iterator object at 0x000000000AA471D0>,这就是一个迭代器
#怎么访问呢?
#一种方法是:
#next(match)#输出是<_sre.SRE_Match object; span=(5, 9), match='.168'>
#继续next(match)访问下一个匹配的结果
#或者用for:
for i in match:
	print(i)#<_sre.SRE_Match object; span=(5, 9), match='.168'>
x想访问其中匹配的结果还是要用group():i.group()

懂了嘛??不懂得话,留言互相探讨一波~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值