[英]How to create a regex for the following scenario (HTML)?
我在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找到它? (我正在處理幾種情況,格式可以在頁面中的多個位置重復。
這是您要尋找的:
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)
不要使用正則表達式來解析HTML(這不是常規語言)。 在stackoverflow上有很多關於該主題的主題。
我建議您使用:BeautifulSoup,Pattern和類似的模塊。
此正則表達式將執行以下操作:
re.findall(r'<TR>\s+<TD.+?</TD>\s+<TD align=center>(.*?)</TD>',html,re.DOTALL)
但是我建議使用解析器。
與正則表達式相比,從HTML提取數據有許多更好的選擇。 例如,嘗試Scrapy 。
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.