请考虑以下事项:
<div id=foodmenu>
<a href="randomlink">Hot Dog</a>
</div>
<div id=foodmenu>
<a href="randomlink">Burger</a>
</div>
<div id=foodmenu>
<a href="randomlink">Chips</a>
</div>
<div id=foodmenu>
<a href="randomlink">Coke</a>
</div>
如何使用正则表达式打印出以下内容:
Hot Dog
Burger
Chips
Coke
答案 0 :(得分:2)
一种非正则表达式,基于HTML解析器的方法(使用BeautifulSoup
HTML解析器):
from bs4 import BeautifulSoup
data = """
<div id=foodmenu>
<a href="randomlink">Hot Dog</a>
</div>
<div id=foodmenu>
<a href="randomlink">Burger</a>
</div>
<div id=foodmenu>
<a href="randomlink">Chips</a>
</div>
<div id=foodmenu>
<a href="randomlink">Coke</a>
</div>"""
soup = BeautifulSoup(data, "html.parser")
print([link.get_text() for link in soup.select("#foodmenu > a")])
打印:
['Hot Dog', 'Burger', 'Chips', 'Coke']
答案 1 :(得分:1)
不使用RegEx解析HTML ,但如果您坚持:
<a[^>]*>(.*?)</a>
数据存储在 Capture Group#1
中如果<a>
标记之间的数据位于单独的行和/或包含缩进,请使用此RegEx:
<a[^>]*>\s*((?:.|\n)*?)</a>