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() 预编译 # ()从正则匹配到的结果中拿到指定数据
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!