正则表达式仅匹配最后一个

时间:2020-01-09 01:08:31

标签: regex

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

 ( ( 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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

将点更改为“而不是括号”,并增加前瞻性以仅查找最后一项,即可匹配您的目标:

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

请参见live demo