仅限正则表达式最后比赛



我正在尝试创建一个正则表达式来捕获:

( ( Workers  >  2 ) AND ( Minute  between 3 AND 10) )
( ( Workers  >  2 ) AND ( Minute  between 3 AND 10) ) AND ( ( Pais  = 32) AND ( Minute  >  5 ) )

我想捕获:

匹配 1:

Full match:    AND ( Minute  between 3 AND 10)
Group 1: Minute  between 3 AND 10

匹配 2:

Full match:    AND ( Minute  >  5 )
Group 1: Minute  >  5

我创建了以下正则表达式:

AND.*(.*(Minute.*?))

但在第二个字符串中,匹配从第一次出现开始。我需要最后一场比赛。

你可以在这里查看: https://regex101.com/r/6Nt3UX/2

如果您使用的是 .net,则可以再将一个参数传递给匹配函数。 RegexOptions.RightToLeft 这将从右开始搜索匹配项。 Regex.Match(input,"Pattern",RegexOptions.RightToLeft( 谢谢

将点更改为"不是括号",并添加向前看以仅查找最后一个术语,与您的目标相匹配:

AND[^(]*([^(]*(Minute[^)]*?))(?=[ )]*$)

观看现场演示。

相关内容

最新更新