2013-10-03 6 views
0

정규 표현식을 처음 사용하고 문자열을 파싱하는 데 문제가 있습니다. 정규식을 사용하여 문자열로 제공된 수식을 구문 분석하고 있습니다.C# 수식의 문자열 표현을 분할

현재 내 정규 표현식은 다음과 같습니다이 정규 표현식 처리 할 수없는 수식 지수가있는 경우이다하는 테스트 케이스

string[] formula_substrings = Regex.Split(formula, "(\\()|(\\))|(-)|(\\+)|(\\*)|(/)|(\\s+)") 

하나.

예 :

Formula = "1e-2 + 5.0" 

내 원하는 출력이

["1e-2", "+", "5.0"] 

하지만 난 내가 앞에 확인 문자를 확인하기 위해 정규 표현식을 변경하려고

["1e", "-", "2", "+", "5.0"]. 

무엇입니까 빼기 기호는 전자 메일을 포함하지 않음 :

사전에
["5", "+", "5-2"] 

내 원하는 출력이

["5", "+", "5", "-", "2"] 

감사 : 표현 그것은 출력을 줄 것이다

Formula = "5+5-2" 

을 때

string[] formula_substrings = Regex.Split(formula, "(\\()|(\\))|((^e)-)|(\\+)|(\\*)|(/)|(\\s+)") 

그리고이 문제를 일으키는 도움! (*?)

+0

은 또한 (*)에 대한 욕심을 읽고 비 욕심 –

답변

3

당신은 사용할 수 있습니다 lookbehind ..

Regex.Split(formula, @"(\(|\)|(?<!e|E)-|(?<!e|E)\+|\*|/|\s+)") 
           -------- --------