正则语法笔记一

文章介绍了Python中re模块的几个主要函数,如re.findall用于查找所有匹配项并返回列表,re.finditer返回可调用的迭代器,每个迭代项包含匹配信息,re.search找到第一个匹配项并返回Match对象,以及re.compile预编译正则表达式提高效率。示例代码展示了如何提取字符串中的数字。
摘要由CSDN通过智能技术生成

1.re.findall(pattern, string):会按照给定的匹配模式在整个字符串中进行匹配,并将结果以列表形式返回。

# \d+匹配数字且1次或很多次
lis = re.findall(f"\d+","我的电话号码是:10086,我女朋友的电话是:10010")
print(type(lis),lis)
# 结果:<class 'list'> ['10086', '10010']

2.re.finditer: 匹配字符串中所有的内容[返回的是迭代器] 从迭代器中拿到内容需要.group()

it = re.finditer(r"\d+","我的电话号码是:10086,我女朋友的电话是:10010")
print(it)
for i in it:
    print(i.group())
# 结果:<callable_iterator object at 0x000001A4E8AF13D0>
# 结果:10086
# 结果:10010

3.re.search:返回的结果是match对象,找到一个结果就返回,拿数据需要.group()

s = re.search(r"\d+","我的电话号码是:10086,我女朋友的电话是:10010")
print(type(s))
print(s)
print(s.group())
# 结果:<class 're.Match'>
# 结果:<re.Match object; span=(8, 13), match='10086'>
# 结果:10086

4.re.compile:预加载正则表达式

# 先设置匹配模式,生成正则对象实列obj,然后通过其进行obj.finditer进行正则匹配,返回的结果是迭代器,通过.group()提取值。
obj = re.compile(r"\d+")
ret = obj.finditer("我的电话号码是:10086,我女朋友的电话是:10010")
for x in ret:
    print(x.group())
print(ret)
# 结果:10086
# 结果:10010
# 结果:<callable_iterator object at 0x0000027DE0301250>

s = """
<div class='jay'><span id='1'>郭麒麟</span></div>
<div class='jj'><span id='2'>宋铁</span></div>
<div class='jolin'><span id='3'>大聪明</span></div>
<div class='sylar'><span id='4'>范思哲</span></div>
<div class='tory'><span id='5'>胡说八道</span></div>
"""
# (?P<分组名字>正则) 可以单独从正则匹配的内容中进一步提取内容
# .*?代表惰性匹配,尽可能的多的少匹配 .*代表贪婪匹配,就是匹配除换行符的其他字符不限次
# (?P<id>\d+)匹配的数字设置分组名id
# (?P<wahaha>.*?)匹配的数字设置分组名wahaha
obj = re.compile(r"<div class='.*?'><span id='(?P<id>\d+)'>(?P<wahaha>.*?)</span></div>",re.S)
result = obj.finditer(s)
for it in result:
    print(it.group("wahaha"))
    print(it.group("id"))
    break
# 结果:郭麒麟
# 结果:1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丿红叶丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值