如何为以下方案(HTML)创建正则表达式?

时间:2012-07-02 11:21:47

标签: python html regex

我在HTML页面中有一些已知的格式,我需要解析标签的内容

<TR>
    <TD align=center>Reissue of:</TD>
    <TD align=center> **VALUES_TO_FIND** </TD>
    <TD> </TD> 
</TR>
<TR>
    <TD align=center> </TD>
</TR>

基本上我认为我可以将HTML与正则表达式连接起来,该正则表达式将匹配我正在寻找的位置内的任何内容。

我知道VALUES_TO_FIND之前和之后的文本将始终相同。如何使用RE找到它? (我正在处理几个案例,格式可以在页面的几个地方重复。

5 个答案:

答案 0 :(得分:1)

这就是你要找的东西:

import re

s="""
<TR>
    <TD align=center>Reissue of:</TD>
    <TD align=center> **VALUES_TO_FIND** </TD>
    <TD> </TD> 
</TR>
"""

p="""
<TR>
    <TD align=center>Reissue of:</TD>
    <TD align=center>(.*)</TD>
    <TD> </TD> 
</TR>
"""

m=re.search(p, s)
print m.group(1)

答案 1 :(得分:0)

不要使用正则表达式来解析HTML(它不是常规语言)。 stackoverflow上的主题有很多主题。

我建议您使用:BeautifulSoup,Pattern和类似模块。

答案 2 :(得分:0)

这个正则表达式将执行:

re.findall(r'<TR>\s+<TD.+?</TD>\s+<TD align=center>(.*?)</TD>',html,re.DOTALL)

但我建议使用解析器。

答案 3 :(得分:0)

从正常表达式中获取HTML数据有很多更好的选择。例如,尝试Scrapy

答案 4 :(得分:0)

HTML不是常规语言,使用正则表达式来处理它很困难。

BeautifulSoup是一个很好的解析器,这里有一个如何使用它的例子:

from BeautifulSoup  import BeautifulSoup 

html = u'''
<TR>
    <TD align=center>Reissue of:</TD>
    <TD align=center> **VALUES_TO_FIND** </TD>
    <TD> </TD> 
</TR>
<TR>
    <TD align=center> </TD>
</TR>'''

bs = BeautifulSoup(html)

print [td.contents for td in bs.findAll('td')]

输出:

[[u'Reissue of:'], [u' **VALUES_TO_FIND** '], [u' '], [u' ']]

你知道该怎么做。 :)

使用pip install BeautifulSoup安装。以下是文档:

http://www.crummy.com/software/BeautifulSoup/bs3/documentation.html