正则表达式提取链接
# 使用正则将一个网页中图片链接提取出来import re
s = '<img src="https://hao2.qhimg.com/t0133f25778df020d4e.gif" width="218" />'
pattern = '<img src=/.*?\.gif|png|jpg'
result = re.search(pattern, s)
print(result)
各位大佬, 为啥我正则怎么试, 出来的结果都是下面这个结果?缺几位? 是不是我的正则写的有问题?
还有个问题, 用正则里面的或操作符'|', 怎么界定或操作的位数? 譬如上面的例子, 如何确保是'gif' , 'png', 'jpg' 的或操作, 而不是 'f' 和 'p', 'g' 和 'j'的或操作, 是要加括号分组吗?
感谢!!!
<re.Match object; span=(0, 56), match='<img src="https://hao2.qhimg.com/t0133f25778df020>
第一个问题:
用 search 得到的是一个 Match 对象,你要看匹配到的字符串得使用 Mathc 对象的 group 方法
第二个问题:
你不是用分组的话,或操作是对所有字符的,比如你的'<img src=/.*?\.gif|png|jpg' 相当于
要么匹配 <img src=/.*?\.gif,要么匹配 png,要么匹配 jpg,
你想限定或操作的范围,只能用分组,分组也可以不保存的(加个 ?:)
import re
s = '<img src="https://hao2.qhimg.com/t0133f25778df020d4e.gif" width="218" />'
pattern = r'<img src="([^"]*(?:gif|png|jpg))"'
result = re.search(pattern, s).group(1)
print(result) 都是固定在src="...."里的,所以加个括号,即可。 完全不用判断图片类型,除非你真的要找特定格式的图片。。
re.findall('<img src="(.*)" width="218" />', s)# 返回的是列表哦 isdkz 发表于 2022-4-2 17:03
第一个问题:
用 search 得到的是一个 Match 对象,你要看匹配到的字符串得使用 Mathc 对象的 group...
再请教一下, [^"]是个神马神仙操作? 阿奇_o 发表于 2022-4-2 17:56
都是固定在src="...."里的,所以加个括号,即可。 完全不用判断图片类型,除非你真的要找特定格式的图片。 ...
感谢! 简单实用{:10_266:} darchir 发表于 2022-4-3 11:09
再请教一下, [^"]是个神马神仙操作?
非双引号的任意字符 isdkz 发表于 2022-4-3 11:32
非双引号的任意字符
受教匪浅 isdkz 发表于 2022-4-3 11:32
非双引号的任意字符
大佬, 再教我一下, 为啥不用小括号, 而是用方括号?{:10_302:} darchir 发表于 2022-4-3 11:44
大佬, 再教我一下, 为啥不用小括号, 而是用方括号?
小括号是分组,中括号才是匹配中括号的任意字符,
中括号里面加个 ^ 就是匹配非中括号里面的内容,
我排除引号是因为,直接用 . 匹配任意字符的话,
贪婪匹配可能会匹配到不在同一个标签里面的 isdkz 发表于 2022-4-3 11:46
小括号是分组,中括号才是匹配中括号的任意字符,
中括号里面加个 ^ 就是匹配非中括号里面的内容,
...
牛×!
页:
[1]