Python正则表达式使用一个正则表达式匹配匹配的元素

标签 python regex

假设我有这个 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/

相关文章:

python - “用户”对象不支持索引

regex - Vim 如何制作 :g work properly with zs matches

python - 指定了 bg、fg 的选定单选按钮中的点消失

python - 匹配一个句子

java - 用于查找 HTML 标记及其内容的正则表达式的否定 - java

c++11 正则表达式和 GCC

regex - ios NSRegularExpression 麻烦

python - 在C中访问python结构数组

Python 中值滤波器应用于 3D 数组以产生 2D 结果

python - 使用 SocketServer.TCPServer 通过 SSL 的 TCP 服务器