python re findall search finditer complie 预加载

python re findall search finditer complie 预加载

几个主要的元数据,表示单个匹配
\d #匹配数字
\w #匹配字母,数字,下划线
\D #/d的取反
\W # /w的取反
[abc] #其中的任意字符
[^abc] #其中的任意字符取反
. #所有内容,贪婪匹配,除了换行

有前置数据,后置描述
? #0/1个

  •  #1个以上
    
  •   #任意多个
    

{n} #n个

特别说明:
“.*?” #不贪婪匹配,一般是将需要匹配的内容用这个替换就可以获取到匹配的内容

re.findall #返回的是列表
re.search #返回match对象,且只匹配到第一个,后面就不匹配了
re.finditer #返回一个可以迭代对象,迭代对象里面是match对象

import re

s = """
要实现自动化数据库断言?其实很easy
课程链接:https://ke.qq.com/webcourse/index.html#cid=315793&term_id=100374766&taid=7225051863441
详细内容:
1. selenium web自动化断言操作
2. 批量获取并存储网页信息数据
3. Java实现数据库连接与查询
4. 数据库与web自动化结果对比断言
"""
# result = re.findall("\d+",s)     #匹配连在一起的数字;返回匹配的,然后放入到列表中
# result = re.search("\w+",s)      #匹配第一次匹配的字符,数字,下划线的多个,遇到特需符号完成,返回match对象,只有1个
# result = re.finditer("\D+",s)     #匹配为可迭代对象,每一个值为一个match对象


#如下为re的预加载功能,可以将上面的cid 和 term_id的值取出来
obj = re.compile(r'ke.qq.com/webcourse/index.html#cid=(?P<cid>.*?)&term_id=(?P<term_id>.*?)&taid=7225051863441',)
# result = obj.findall(s)                #返回列表,但是时匹配的元素放入到一个元组中,然后再放入到了列表

# result = obj.search(s)                   #找到对应的命名的内容,并匹配 
# cid = result.group("cid")
# term_id =  result.group("term_id")
# print(cid,term_id)

result = obj.search(s)           #直接search到match的对象,直接用groupdict列出所有匹配的值
dict = result.groupdict()
print(dict)

# result = obj.finditer(s)               #使用finditer需要将迭代对象列出来,然后用match对象;那我用这个finditer的作用是什么呢?每次都要解包才能用?
# for i in result:
#     dict = i.groupdict()
#     print(dict)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值