使用Python使用正则表达式在HTML中进行多次最短匹配

时间:2017-04-02 04:24:54

标签: python regex

我正在尝试使用Python中的正则表达式获取此HTML代码http://catedral.prefeitura.unicamp.br/cardapio.php的4个表的内容。 表格以。开头 " [\吨\ n \ s]的" 并完成 "< /表> [\吨\ n \ s]的< / TD>" 我使用的代码如下:

menuSearchString = '<td align="left" valign="top">[\t\n\s]*<table width="[\d%]+" class="fundo_cardapio">([\s\S\d\t\n]+)<\/table>[\t\n\s]*<\/td>'
menus = re.findall(menuSearchString,page)
print menus

但我无法获得表格的四场比赛。我想我错了贪婪的配置和&#34;?&#34;操作员,我最后试过但没有工作。

1 个答案:

答案 0 :(得分:0)

你是对的。正则表达式的一部分是greedy,这会导致正则表达式捕获一个匹配中的所有四个表。您所要做的就是制作此部分lazy以获得四场比赛。

更改正则表达式的这一部分:

[\s\S\d\t\n]+

要:

[\s\S\d\t\n]+?

完整代码:

menuSearchString = '<td align="left" valign="top">[\t\n\s]*<table width="[\d%]+" class="fundo_cardapio">([\s\S\d\t\n]+?)<\/table>[\t\n\s]*<\/td>'
menus = re.findall(menuSearchString,page)
print menus