Regex将返回一组中的所有匹配项

Regex将返回一组中的所有匹配项,regex,python-3.x,Regex,Python 3.x,我在分组返回匹配时遇到问题,因为最后一个匹配“)”只在最后一个寄存器中有效。 我想返回下面示例中的所有三个匹配项。 有什么建议吗 链接到 regex=“\[\]\((?).*)\” text=“![](https://tomticket- (anexos.s3.amazonaws.com/inimg/imagename1.jpg) ![](https://tomticket- (anexos.s3.amazonaws.com/inimg/imagename2.jpg) ![](https://t

我在分组返回匹配时遇到问题,因为最后一个匹配“)”只在最后一个寄存器中有效。 我想返回下面示例中的所有三个匹配项。 有什么建议吗

链接到

regex=“\[\]\((?).*)\”
text=“![](https://tomticket-
(anexos.s3.amazonaws.com/inimg/imagename1.jpg)
![](https://tomticket-
(anexos.s3.amazonaws.com/inimg/imagename2.jpg)
![](https://tomticket-
(anexos.s3.amazonaws.com/inimg/imagename2.jpg)
"

一切都在第一次之后![](和最后一个)返回。

发生这种情况是因为
*
是贪婪的。它将消耗尽可能多的字符,包括在过程中可能找到的任何闭括号

要解决此问题,请使用
[^]*
告诉regex您正在从要捕获的字符列表中明确排除
字符

你的图案
\[\]\(((?s.*)\)
将首先匹配
[](
),然后使用内联修饰符
(?s)
,该修饰符将使点匹配新行,因此
*
将匹配到最后一行,然后回溯到最后一行

您可以使用从左括号开始的匹配(直到第一个右括号为止))

  • 按字面意思匹配,如果您还想匹配它
  • \[\]
    匹配
    []
  • \(
    匹配
  • [^]+
    匹配除
    之外的任何字符的1+倍,该字符也将匹配换行符
  • \)
    匹配

如果您提到您使用的语言,可能会有所帮助。或者添加一个适当的语言标签(请仅添加您正在使用的语言)。
!\[\]\([^)]+\)