Python Findall未捕获所有匹配项

2024-05-14 20:04:03 发布

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

我正在抓取一个网页的HTML代码,目前正试图构建一个正则表达式来获取我需要的信息。 在我的示例中,该模式重复大约20次,如下所示: 它应该以tivo开始(因为它要么以tivo开始,要么以Inativo开始),并且应该以“Ver Detalhes”结束。 正如我之前所说,这种模式重复了大约20次

我在上面使用的代码行是:

posts=re.findall('(ativo.*?ver det)',text,re.IGNORECASE)

但它不起作用,因为它只得到12场比赛,我不明白为什么。 我试过用。*代替。*?但是它只提取了3个匹配项

可在以下链接中找到该文件: Source file

这是可以提取的东西吗


Tags: 代码re信息网页示例html模式posts
1条回答
网友
1楼 · 发布于 2024-05-14 20:04:03

也许您希望的一些匹配发生在一行或多行上,在这种情况下,您的模式中的.*将不会在该行上拾取。解决方案是在启用“点全部”模式的情况下进行搜索,例如

posts = re.findall('\b(?:in)?ativo.*?ver detalhes\b', text, flags=re.IGNORECASE|re.DOTALL)

我一字不差地回答了你的问题:

and should end in "Ver Detalhes"

如果您真的希望匹配只以ver det结束,请使用:

posts = re.findall('\b(?:in)?ativo.*?ver det', text, flags=re.IGNORECASE|re.DOTALL)

相关问题 更多 >

    热门问题