簡體   English   中英

如何為以下場景(HTML)創建正則表達式?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM