python基础-re模块

import re
# 1.从一个字符串中提取到所以的数字
lst = re.findall('\d+', "fajhdsjk123kjfakl123213")
print(lst) # 返回的是一个列表
# 2.判断一句话是否有数字
# search的特点:匹配字符串,匹配到第一个结果就返回,不会匹配出多个结果来
res = re.search('\d+', "fajhdsjk123kjfakl123213")
print(res.group())
# 3.finditer ,所有的数据都会进行匹配,返回的是迭代器
it = re.finditer('\d+', "fajhdsjk123kjfakl123213")
for item in it:
print(item.group())
# 4.match 匹配,从头开始匹配 ^
result = re.match('\d+', "123kjfakl123213")
print(result.group())
# 切割 返回一个列表,先对’你‘进行分割一次,再对’的‘进行切割一次
result = re.split("[你的]", "你好,18岁先生,我是16岁的你")
print(result, type(result))
# 替换 返回字符串
result = re.sub("\d+", '__hi__', "你好,18岁先生,我是16岁的你")
print(result, type(result))
# 替换并统计次数 返回元组
result = re.subn("\d+", '__hi__', "你好,18岁先生,我是16岁的你")
print(result, type(result))
# 先加载这个正则,后面可以直接使用这个正则来匹配内容
# 返回列表
obj = re.compile('\d+')
lst = obj.findall("你好,18岁先生,我是16岁的你")
print(lst)
# 爬虫必会的一个重点
# 正则表达式中经常出现的\n,为了避免这类问题出现,
# 可以在字符串前面写上r来直接把字符串中的内容全部当成普通字符来处理
# 1.()括起来的内容是你最终想要的结果
# 2.(?P<name>正则) 把正则匹配到的内容直接放在name组里面,后面取数据的时候直接group(name)
# re.S:让.能匹配换行符
# 例一:
obj = re.compile(r'hnzy.bfvvs.com\\/play\\/(?P<m3u8_url>.*?)\\/index.m3u8', re.S)
m3u8_url = +obj.search(resp.text).group('m3u8_url')
# 例二:
obj = re.compile(r'中午我要吃(?P<mian>\d+)碗饭再喝(?P<xian>\d+)碗汤',re.S)
# print(r'fasd\nfakl;s')
result = obj.finditer("早上我要是1个包子,中午我要吃1碗饭再喝2碗汤,晚上吃2包方便面")
for item in result:
# print(item.group("mian"))
# print(item.group("xian"))
print(item.groupdict())
# findall: 匹配所有,返回列表
# finditer: 匹配所有,返回迭代器
# search: 匹配到一个结果就返回
# match:从头匹配,得到一个结果就返回
# group: 拿到数据的。
# group(组名)
# re.compile() 预编译
# ()从正则匹配到的结果中拿到指定数据

 

posted @   0x1e61  阅读(32)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示