|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
# 使用正则将一个网页中图片链接提取出来
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)
复制代码
|
|