我有一个如下所示的变量:
var = '<img src="path_1"><p>Words</p><img src="path_2>'
它是一个字符串,但里面显然是html元素。如何使用正则表达式仅获取第一条路径(即 path_1)?
我正在尝试这样的事情:
match = re.match(r'src=\"[\w-]+\"', var)
print match.group(0)
我收到这个错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'group'
感谢任何帮助。
请您参考如下方法:
你 should use an HTML parser喜欢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'
至于正则表达式方法,您需要进行以下更改以使其工作:
- 切换到
re.search(),re.match()从字符串开头开始匹配 - 添加一个 capturing group 捕获
src值 - 不需要转义双引号
固定版本:
>>> re.search(r'src="([\w-]+)"', var).group(1)
'path_1'
