yhhpf 发表于 2020-6-4 13:43:11

正则表达式的问题

>>> 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的列表内容最后会不一致?

{:10_243:}

Twilight6 发表于 2020-6-4 13:44:31

search 查找全部但是只返回第一个查到到的,而findall是查找全部返回一个列表 有差距吧

yhhpf 发表于 2020-6-4 13:50:27

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

我按字面意思理解,应该是会返回到我写的.jpg后面的第一个>为止啊,那为何searchc到http://就结束了?

Twilight6 发表于 2020-6-4 13:53:33

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

不是呀他匹配到的是全部吧span =(1,189) 匹配到位置参数的范围

Twilight6 发表于 2020-6-4 13:55:35

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

match 没全部显示而已,你要看 span 范围

Twilight6 发表于 2020-6-4 13:57:10

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

你可以这样查看match内容
print(re.search(p,url).string)

yhhpf 发表于 2020-6-4 13:57:29

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

哦哦,理解了

yhhpf 发表于 2020-6-4 13:58:01

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

多谢,顺便问下为什么span会默认=(1,189)???

Twilight6 发表于 2020-6-4 13:59:15

yhhpf 发表于 2020-6-4 13:58
多谢,顺便问下为什么span会默认=(1,189)???

不是默认 span 是显示匹配到字符串开始位置和结束位置的 位置参数
你可以 .start 查看开始位置参数
.end 查看结尾位置参数
.string 查看match内容

yhhpf 发表于 2020-6-4 14:00:59

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

好的,我再研究下,多谢了。{:10_298:}

Twilight6 发表于 2020-6-4 14:01:28

yhhpf 发表于 2020-6-4 14:00
好的,我再研究下,多谢了。

客气了。{:10_298:}
页: [1]
查看完整版本: 正则表达式的问题