基于Python正则表达式的htmlw多个最短匹配

2024-10-04 01:36:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用Python中的正则表达式获取这个HTML代码http://catedral.prefeitura.unicamp.br/cardapio.php的4表的内容。 桌子从 “[\t\n\s]” 最后以 “<;/table>;[\t\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

但是我找不到那四张桌子。我想我误解了贪婪的配置和“?”接线员,我最后试过了,但没有成功。你知道吗


Tags: 代码brltgthttphtmltabletd
1条回答
网友
1楼 · 发布于 2024-10-04 01:36:51

你说得对。正则表达式的一部分是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

相关问题 更多 >