C# 获取公式集合的正则表达式
出于某些计算原因,我必须分解公式的集合。对于聚合,我指的是“总和”、“平均值”、“计数” 公式中括号之间有不同的数据。可能是这样的:C# 获取公式集合的正则表达式,c#,regex,C#,Regex,出于某些计算原因,我必须分解公式的集合。对于聚合,我指的是“总和”、“平均值”、“计数” 公式中括号之间有不同的数据。可能是这样的: ([D23] + SUM([D24]) + [D25]) + AVG([D28])[D47][D80] - [D75] 如您所见,聚合的格式是“AGREGATE([DATA])”。这些集合可以是总和、平均值、计数、最大值、最小值。。。我的目标是得到一个正则表达式,通过这个公式,可以得到以下输出: SUM([D24]) //One match AVG([D28]
([D23] + SUM([D24]) + [D25]) + AVG([D28])[D47][D80] - [D75]
如您所见,聚合的格式是“AGREGATE([DATA])”。这些集合可以是总和、平均值、计数、最大值、最小值。。。我的目标是得到一个正则表达式,通过这个公式,可以得到以下输出:
SUM([D24]) //One match
AVG([D28]) //Another match
我需要匹配集合和它们引用的数据。也许这是一个很容易找到的模式,但我对RegEx还不熟悉,所以一直没能找到它。我试过一些方法,最接近的是这个模式:
(SUM|AVG|COUNT|MAX|MIN)(\([^)(]*\))
这就是我想要的匹配(看起来匹配是正确的),但它以两种方式捕获匹配,如
SUM //One group
([D24]) //Another group
但是,出于我的目的,我需要在一个组中捕获所有内容。如有任何提示,我们将不胜感激
谢谢。将其设置为非捕获组,这样它就不会捕获任何内容
(?:SUM|AVG|COUNT|MAX|MIN)(?:\([^)(]*\))
谢谢!我不知道非抓捕组。有了这些,我得到了我想要实现的东西,比如
(?:SUM | AVG | COUNT | MAX | MIN | PRI | ULT)(?:\(\[D[0-9]+\]\)
,这样我就可以在一个组中捕获所有这些。标记为答案。