爬虫-正则表达式和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让正则表达式中的.匹配换行符
posted @   同淋雪  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· Qt个人项目总结 —— MySQL数据库查询与断言
点击右上角即可分享
微信分享提示