Python正则表达式,匹配太多

Python正则表达式,匹配太多,python,html,regex,Python,Html,Regex,嗨,我有一个正则表达式 。。。 我试图提取的部分是 2。。。 它从第一个 为什么会发生这种情况?我认为(+?)是非贪婪的,所以它应该提取最小的数量应该是 我使用的完整python代码是match=re.compile(“”,re.DOTALL).findall(pagenav)从某种意义上说,匹配的开始总是贪婪的。这是因为引擎尝试从左到右匹配主题字符串。第一个如果使用”而不是“(与给定示例中的第二个锚定标记一样)?如果属性之间有多个空格该怎么办?如果不仅仅是href和class属性,还有

嗨,我有一个正则表达式
。。。

我试图提取的部分是
2。。。


它从第一个

为什么会发生这种情况?我认为(+?)是非贪婪的,所以它应该提取最小的数量
应该是



我使用的完整python代码是
match=re.compile(“”,re.DOTALL).findall(pagenav)
从某种意义上说,匹配的开始总是贪婪的。这是因为引擎尝试从左到右匹配主题字符串。第一个
如果使用
而不是
(与给定示例中的第二个锚定标记一样)?如果属性之间有多个空格该怎么办?如果不仅仅是
href
class
属性,还有更多属性该怎么办?如果
class
属性列在
href
属性之前该怎么办

jdotjdot的答案提供了一个很好的例子,说明了如何在Python中以正确的方式进行操作

它从第一个文件中提取所有内容 为什么会发生这种情况?我认为(+?)是非贪婪的,所以它应该提取最小的数量


它不是贪婪的。但是,您有一个强制的
class=“nextpostslink”>
正则表达式,这一事实迫使引擎匹配所有内容,直到它找到
class=“nextpostslink”>

据我所知,贪婪从正则表达式的开始就起作用——即,它在这里找到


可能是重复的哎哟…你为什么不使用lxml或美丽的汤呢?啊,我想可能是这样的,但第一次(在第一个街区)效果很好,所以我认为这不是原因。谢谢[^“]效果很好。谢谢我给美丽的汤一次机会。我的目标是使它成为XBMC的插件,所以我试图避免安装任何额外的模块。但是现在我看到XBMC确实包含了一个漂亮的汤和PARSEDOM模块,所以我试着尝试一下其中的一个。<代码> LXML更快,所以也考虑一下。
<a href="([^"]*)" class="nextpostslink">
from bs4 import BeautifulSoup as BS
soup = BS(html)
print soup.find("a", "nextpostslink").attrs['href']
# returns u'http://cinemassacre.com/category/avgn/page/2/'