我试过这样的方法,但失败了。我不知道regex有人能帮我吗
import re
html = """
<body>
<h1>dummy heading</h1>
<img src="/pic/earth.jpg" alt="planet" width="200">
<img src="/pic/redrose.jpg" alt="flower" width="200">
</body>
"""
x = re.search('^src=".*jpg$', html)
print(x)
我希望输出如下['/pic/earth.jpg','/pic/redrose.jpg']
第一步很好,但是您的代码有几个小问题:
^
和$
指字符串的开头和结尾.search()
返回Null
或Match
对象,而不是匹配的字符串.findall()
方法r"string"
字符串'
和"
引用,并且在非图像的某些内容中可能存在src=
属性以下是文件: -https://docs.python.org/3/library/re.html#re.findall
将此作为正则表达式进行尝试:
要稍微分解一下这一点:
re.findall()
返回字符串列表<img
我们希望从图像标记开始[^<>]+
1个或多个不打开/关闭html标记的字符<img>
中可能没有src=""
标记["\']
HTML可以使用任何一种类型的引号[^"\'<>]+
在字符串和标记未关闭时,继续读取1+个字符\.
文字点需要转义,否则它们表示“匹配任何内容”特殊字符(?:gif|png|jpe?g)
一系列可能的文件扩展名,但不要为它们创建捕获括号(这将在数组中返回这些扩展名)([^"\'<>]+\.(?:gif|png|jpe?g))
这是每个匹配实际返回的内容的捕获括号["\']
搜索结束引号以结束捕获括号re.I
使正则表达式不区分大小写我不擅长正则表达式。所以我的答案可能不是最好的
试试这个
你可以看到下面的x
正则表达式解释:
(?=src):正向查找>;只看那些有srcword的
src=\”:必须包含此特定单词src=“
(?p somthing):此表达式将somthing分组为namesrc
[^\“]+:除“字符”之外的所有内容
相关问题 更多 >
编程相关推荐