2014-07-17 2 views
0

일부 계산상의 이유로 수식의 집계를 분리해야합니다. 집계를 사용하면 "SUM", "AVG", "COUNT"...을 의미합니다.수식의 집계를 가져 오는 정규식

수식에 괄호 사이에 다른 데이터가 있습니다. 다음과 같이 될 수 있습니다.

([D23] + SUM([D24]) + [D25]) + AVG([D28])[D47][D80] - [D75] 

자세히 알 수 있듯이, 집계 형식은 "AGREGATE ([DATA])"입니다. 나는 집계 일치 할 필요

SUM([D24]) //One match 
AVG([D28]) //Another match 

과 : 그 집계 SUM은, AVG는, COUNT는, MAX는, MIN은 ... 내 목표는이 공식이 출력을 가질 수, 정규 표현식을 얻을 것입니다 수 있습니다 그들이 참조하는 데이터. 아마도 이것은 쉽게 찾을 수있는 패턴 일 수 있지만 RegEx를 처음 접했을 때 나는 그것을 찾을 수 없었습니다. 나는 일치의 관점 (성냥이 보인다 올바른지)에서 원하는 것을 그

(SUM|AVG|COUNT|MAX|MIN)(\([^)(]*\)) 

하지만 두 grups에서 경기를 캡처 : 나는 몇 가지를 시도, 내가받은 것을 가장 가까운이 패턴이다 , like

SUM //One group 
([D24]) //Another group 

그러나 내 목적을 위해 모든 것을 하나의 그룹으로 캡처해야합니다. 그 어떤 힌트도 인정 될 것입니다.

감사합니다.

답변

1

아무 것도 캡처하지 않도록 캡처하지 않는 그룹으로 설정하십시오.

(?:SUM|AVG|COUNT|MAX|MIN)(?:\([^)(]*\)) 

DEMO

+0

감사합니다! 나는 그룹을 포착하지 않은 것에 대해 몰랐다. 이것으로 나는 달성하고자하는 것을 얻었습니다.'((: SUM | AVG | COUNT | MAX | MIN | PRI | ULT) (? : \ [D [0-9] + \] \)))', 그래서 나는 그것을 모두 한 그룹에 담을 수있다. 답변으로 표시되었습니다. – xecollons

관련 문제