正则表达式的问题
>>> 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:} search 查找全部但是只返回第一个查到到的,而findall是查找全部返回一个列表 有差距吧
Twilight6 发表于 2020-6-4 13:44
search 查找全部但是只返回第一个查到到的,而findall是查找全部返回一个列表 有差距吧
我按字面意思理解,应该是会返回到我写的.jpg后面的第一个>为止啊,那为何searchc到http://就结束了? yhhpf 发表于 2020-6-4 13:50
我按字面意思理解,应该是会返回到我写的.jpg后面的第一个>为止啊,那为何searchc到http://就结束了?
不是呀他匹配到的是全部吧span =(1,189) 匹配到位置参数的范围 yhhpf 发表于 2020-6-4 13:50
我按字面意思理解,应该是会返回到我写的.jpg后面的第一个>为止啊,那为何searchc到http://就结束了?
match 没全部显示而已,你要看 span 范围 yhhpf 发表于 2020-6-4 13:50
我按字面意思理解,应该是会返回到我写的.jpg后面的第一个>为止啊,那为何searchc到http://就结束了?
你可以这样查看match内容
print(re.search(p,url).string) Twilight6 发表于 2020-6-4 13:53
不是呀他匹配到的是全部吧span =(1,189) 匹配到位置参数的范围
哦哦,理解了 Twilight6 发表于 2020-6-4 13:53
不是呀他匹配到的是全部吧span =(1,189) 匹配到位置参数的范围
多谢,顺便问下为什么span会默认=(1,189)??? yhhpf 发表于 2020-6-4 13:58
多谢,顺便问下为什么span会默认=(1,189)???
不是默认 span 是显示匹配到字符串开始位置和结束位置的 位置参数
你可以 .start 查看开始位置参数
.end 查看结尾位置参数
.string 查看match内容 Twilight6 发表于 2020-6-4 13:59
不是默认 span 是显示匹配到字符串开始位置和结束位置的 位置参数
你可以 .start 查看开始位置参数
. ...
好的,我再研究下,多谢了。{:10_298:} yhhpf 发表于 2020-6-4 14:00
好的,我再研究下,多谢了。
客气了。{:10_298:}
页:
[1]