首页 > 解决方案 > 正则表达式仅最后匹配

问题描述

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

 ( ( Workers  >  2 ) AND ( Minute  between 3 AND 10) )

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

我想捕捉:

第一场比赛:

 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

标签: regex

解决方案


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


推荐阅读