假设我有这个 html 代码:
<table id="test_table">
<td>
<a href="#">#</a>
<a href="#">#</a>
<a href="#">#</a>
<a href="#">#</a>
<a href="#">#</a>
<a href="#">#</a>
<a href="#">#</a>
<a href="#">#</a>
</td>
</table>
<table id="test_table2">
<td>
<a href="#">#33</a>
<a href="#">#33</a>
<a href="#">#33</a>
<a href="#">#33</a>
<a href="#">#33</a>
<a href="#">#33</a>
<a href="#">#33</a>
<a href="#">#33</a>
</td>
</table>
我只想匹配 #test_table 中的 href 并迭代它们?我尝试过这样的事情:
<table id="test_table">\s*<td>(\s*<a href="(?P<url>.*?)">(?P<anchor>.*?)</a>\n)*
但这只匹配第一个元素,我在这个问题上坚持了几个小时,但我无法得到正确的结果,谢谢您的帮助。
最佳答案
对于 HTML,请使用正确的工具。请改用 HTML 解析器,例如 BeautifulSoup :
from bs4 import BeautifulSoup
soup = BeautifulSoup(html)
table = soup.find('table', id='test_table')
for anchor in table.find_all('a'):
print anchor['href'], anchor.string
不要使用正则表达式,用这样的表达式匹配 HTML 会变得太复杂、太快。不要这样做。
关于Python正则表达式使用一个正则表达式匹配匹配的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15686395/