2016-11-23 39 views
0

想了解一下这个项目是什么,我正在尝试编写一种标记语言来编译为HTML/CSS。我计划格式化这样的链接:@(链接掩码)[(链接网址)],我想查找所有这一切,并获得链接掩码和链接网址。如何在Python中找到多个相同的格式?

我尝试使用这个代码是:

re.search("@(.*)\[(.*)\]", string) 

但它开始在一审开始,在链接的最后一个实例的结束而结束。任何想法,我怎么能找到他们所有的人,在一个列表或什么?

回答

0

正则表达式的默认行为是“贪婪匹配”。这意味着每个.*将尽可能多的字符,因为它可以匹配。

你希望它们匹配尽可能少的字符数量,为此,改变每个.*变成.*?。最后的问号将使模式匹配最少的字符数。由于您将模式固定为]字符,因此它仍然会正确匹配/消耗整个链接。

0

*是贪婪的:它可以匹配尽可能多的字符,例如,直到文档中最后一个右括号。 (毕竟,.意味着“任何字符”和)是“任意字符”不亚于任何其它字符。)

您需要的*的非贪婪版本,这是*?(也许其实你应该使用+? ,因为我不认为零长度的比赛将是非常有用的)。

相关问题