使用python正则表达式查找图像路径

dar*_*rse 1 python regex

我有一个像下面这样的变量:

var = '<img src="path_1"><p>Words</p><img src="path_2>'
Run Code Online (Sandbox Code Playgroud)

它是一个字符串,但里面显然是html元素.如何使用正则表达式获取第一个路径(即path_1)?

我正在尝试这样的事情:

match = re.match(r'src=\"[\w-]+\"', var)
print match.group(0)
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'group'
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏.

ale*_*cxe 5

您应该使用HTML解析器,如BeautifulSoup:

>>> from bs4 import BeautifulSoup
>>> var = '<img src="path_1"><p>Words</p><img src="path_2>'
>>> soup = BeautifulSoup(var, "html.parser")
>>> soup.img["src"]
'path_1'
Run Code Online (Sandbox Code Playgroud)

至于正则表达式方法,您需要进行以下更改才能使其正常工作:

  • 切换到re.search(),re.match()从字符串的开头开始匹配
  • 添加捕获组以捕获src值
  • 没有必要逃避双引号

固定版本:

>>> re.search(r'src="([\w-]+)"', var).group(1)
'path_1'
Run Code Online (Sandbox Code Playgroud)

  • 我会说:你***应该***使用HTML解析器 (3认同)
  • 绝对是@PedroLobito,做了修改并引用了着名的帖子.谢谢. (2认同)