获取标记属性以匹配正则表达式中的内部单词

时间:2015-08-28 11:42:25

标签: python html regex

我需要从内部单词与我的查询单词匹配的标记中获取特定属性值。例如,考虑一个目标html -

<span data-attr="something" attr1="" ><i>other_word</i></span>
<span data-attr="required" attr1="" ><i>word_to_match</i></span>
<span data-attr="something1" attr1="" ><i>some_other_word</i></span>

现在,我需要获得 &#39;内容词(在本例中为 word_to_match )与我的查询词匹配的标记的 data-attr 属性值。

问题在于,我写的正则表达式也在返回其他跨度。在这种情况下,我还没能做出非贪婪的正则表达式。

如果它有帮助,我会在python中这样做,并且请不要在这里使用正则表达式&#34;的解决方案。

2 个答案:

答案 0 :(得分:0)

如何使用正则表达式和输出组替换字符串(javascript语法,但我希望python具有类似的功能)?

str.replace(/data-attr="([^"]*)"[^>]*>[^<]*<i>word_to_match</, '$1')

答案 1 :(得分:0)

使用正则表达式解析网站并不是一个好主意。你可以使用BeautifulSoup。它可靠而有效:

>>>from bs4 import BeautifulSoup

>>>soup = BeautifulSoup("""
    <span data-attr="something" attr1="" ><i>other_word</i></span>
    <span data-attr="required" attr1="" ><i>word_to_match</i></span>
    <span data-attr="something1" attr1="" ><i>some_other_word</i></span>""")

>>>[x.attrs['data-attr'] for x in soup.select('span') if 'word_to_match' in str(x)][0]
'required'