我正在尝试创建一个正则表达式来捕获:
( ( 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[^)]*?))(?=[ )]*$)
观看现场演示。