如何使用正则表达式在Python中获取嵌套<b>
HTML标记的值?
<a href="/model.xml?hid=90971&modelid=4636873&show-uid=678650012772883921" class="b-offers__name"><b>LG</b> X110</a>
# => LG X110
答案 0 :(得分:7)
你没有。
正则表达式不适合处理HTML的嵌套结构。请改用HTML parser。
答案 1 :(得分:6)
不要使用正则表达式来解析HTML。使用像BeautifulSoup这样的HTML解析器。看看它有多容易:
from BeautifulSoup import BeautifulSoup
html = r'<a href="removed because it was too long"><b>LG</b> X110</a>'
soup = BeautifulSoup(html)
print ''.join(soup.findAll(text=True))
# LG X110
答案 2 :(得分:1)
试试这个......
<a.*<b>(.*)</b>(.*)</a>
$ 1和$ 2应该是您想要的,或者Python用于打印捕获的组的任何方式。
答案 3 :(得分:1)
您的问题很难理解,但从给定的输出示例来看,您似乎想从输入文本中删除<
和>
中的所有内容。这可以这样做:
import re
input_text = '<a bob>i <b>c</b></a>'
output_text = re.sub('<[^>]*>', '', input_text)
print output_text
这给了你:
i c
如果那不是您想要的,请澄清。
请注意,解析XML的正则表达式方法非常脆弱。例如,上面的示例将在输入<a name="b>c">hey</a>
上中断。 (>
是属性值中的有效字符:see XML specs)
答案 4 :(得分:0)
+1为Jens的回答。 lxml是一个很好的库,你可以用它来以一种强大的方式实际解析它。如果您更喜欢标准库中的某些内容,可以使用sax,dom或elementree。