鱼C论坛

 找回密码
 立即注册
查看: 1063|回复: 10

[已解决]正则表达式的问题

[复制链接]
发表于 2020-6-4 13:43:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
>>> url = '#<img class="BDE_Image" pic_type="0" src="https://imgsa.baidu.com/forum/w%3D580/sign=2ac3feab978fa0ec7fc764051696594a/3efd5266d0160924e30b9e83d20735fae6cd347f.jpg" width="560" height="560">'
>>> p = r'<img class="BDE_Image".*?src="[^"]*\.jpg".*?>'
>>> import re
>>> re.search(p,url)
<re.Match object; span=(1, 189), match='<img class="BDE_Image" pic_type="0" src="https://>
>>> print(re.findall(p,url))
['<img class="BDE_Image" pic_type="0" src="https://imgsa.baidu.com/forum/w%3D580/sign=2ac3feab978fa0ec7fc764051696594a/3efd5266d0160924e30b9e83d20735fae6cd347f.jpg" width="560" height="560">']
>>> 

大佬们,请教下,代码如上。
用re的search和findall方法,对同一个段文本进行处理,正则表达式都是p = r'<img class="BDE_Image".*?src="[^"]*\.jpg".*?>'
而url文本中都是只有一段是复合p的,为何search的match和findall的列表内容最后会不一致?


最佳答案
2020-6-4 13:53:33
yhhpf 发表于 2020-6-4 13:50
我按字面意思理解,应该是会返回到我写的.jpg后面的第一个>为止啊,那为何searchc到http://就结束了?

不是呀  他匹配到的是全部吧  span =(1,189) 匹配到位置参数的范围
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-4 13:44:31 | 显示全部楼层
search 查找全部但是只返回第一个查到到的,而findall是查找全部返回一个列表 有差距吧

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-4 13:50:27 | 显示全部楼层
Twilight6 发表于 2020-6-4 13:44
search 查找全部但是只返回第一个查到到的,而findall是查找全部返回一个列表 有差距吧

我按字面意思理解,应该是会返回到我写的.jpg后面的第一个>为止啊,那为何searchc到http://就结束了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-4 13:53:33 | 显示全部楼层    本楼为最佳答案   
yhhpf 发表于 2020-6-4 13:50
我按字面意思理解,应该是会返回到我写的.jpg后面的第一个>为止啊,那为何searchc到http://就结束了?

不是呀  他匹配到的是全部吧  span =(1,189) 匹配到位置参数的范围
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-4 13:55:35 | 显示全部楼层
yhhpf 发表于 2020-6-4 13:50
我按字面意思理解,应该是会返回到我写的.jpg后面的第一个>为止啊,那为何searchc到http://就结束了?

match 没全部显示而已,你要看 span 范围
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-4 13:57:10 | 显示全部楼层
yhhpf 发表于 2020-6-4 13:50
我按字面意思理解,应该是会返回到我写的.jpg后面的第一个>为止啊,那为何searchc到http://就结束了?

你可以这样查看match内容
print(re.search(p,url).string)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-4 13:57:29 | 显示全部楼层
Twilight6 发表于 2020-6-4 13:53
不是呀  他匹配到的是全部吧  span =(1,189) 匹配到位置参数的范围

哦哦,理解了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-4 13:58:01 | 显示全部楼层
Twilight6 发表于 2020-6-4 13:53
不是呀  他匹配到的是全部吧  span =(1,189) 匹配到位置参数的范围

多谢,顺便问下为什么span会默认=(1,189)???
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-4 13:59:15 | 显示全部楼层
yhhpf 发表于 2020-6-4 13:58
多谢,顺便问下为什么span会默认=(1,189)???

不是默认 span 是显示匹配到字符串开始位置和结束位置的 位置参数
你可以 .start 查看开始位置参数
.end 查看结尾位置参数
.string 查看match内容
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-4 14:00:59 | 显示全部楼层
Twilight6 发表于 2020-6-4 13:59
不是默认 span 是显示匹配到字符串开始位置和结束位置的 位置参数
你可以 .start 查看开始位置参数
. ...

好的,我再研究下,多谢了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-4 14:01:28 | 显示全部楼层
yhhpf 发表于 2020-6-4 14:00
好的,我再研究下,多谢了。

客气了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-21 01:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表