爬虫-正则表达式和re模块
正则表达式和re模块
一、正则表达式
1、常用元字符
. 匹配除换行符以外的任意字符 \w 匹配字母或数字或下划线 \s 匹配任意的空白符 \d 匹配任意的数字 \n 匹配一个换行符 \t 匹配一个制表符 ^ 匹配字符串的开始 $ 匹配字符串的结尾 \W 匹配非字母或数字或下划线 \D 匹配非数字 \S 匹配非空白符 a|b 匹配匹配字符a或b () 匹配括号内的表达式,也表示一个组 [] 匹配字符组中的字符 [^] 匹配除了字符组中的所有字符
2、量词
控制前面的元字符出现的次数
* 重复重复重复重复零次或更多次 + 重复重复重复一次或更多次 ? 重复重复零次或一次 {n} 重复n次 {n,m} 重复n到m次
3、贪婪匹配和惰性匹配
.* 贪婪匹配(尽可能的匹配更多的结果) .*? 惰性匹配(只匹配第一个结果)
二、re模块
# 匹配所有符合的结果 res = re.findall(r"目标内容","原始字符串") # 为防止与转义字符混淆,使用r标记正则表达式 # 生成迭代器 res = re.finditer(r"","") # res是一个迭代器 for item in res: print(item.group()) # item.group()提取数据 # 匹配第一个符合的结果 res = re.search(r"","") print(res.group()) # 从字符串的开头进行匹配 res = re.match(r"","") # 预加载正则表达式 obj = re.compile(r"") # 使用加载好的正则 res = obj.findall(r"","") # (?P<名字>正则) 为匹配结果取名 # 分组 obj = re.compile(r"<span id='(?P<id>\d+)'>(?P<name>.*?)</span>) # 只提取出()的匹配结果 obj = re.compile(r"<span id='(?P<id>\d+)'>(?P<name>.*?)</span>",re.S) # re.S让正则表达式中的.匹配换行符
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· Qt个人项目总结 —— MySQL数据库查询与断言