2010-06-04 4 views
0

로 시작 ($ ASMLNA $ * $ TSM $ * 8 * ($ GrossDownTarget $ * $ 005930K $) + 15) 이제

나는 모든 변수를 얻기 위해 노력하고 있어요 $ $ 사이에 있습니다. 예를 들어 $ ASMLNA $ 때문에 ASMLNA를 제공해야합니다.

내가 정규식을 사용하여 시도하고이 사람이 올바른 방향으로 날 지점 수 있다면 그것은 좋은 것입니다 지금

 
    Regex r = new Regex(@"[^\$]"); 

     string Contents = txtRegEx.Text.Trim(); 
     MatchCollection ImageCollection = r.Matches(Contents); 
     string tempContents = string.Empty; 
     foreach (Match match in ImageCollection) 
     { 
      tempContents+= match.Value; 
     } 

까지 할 수 있었던 것입니다.

+0

여기 정규 표현식을 사용해야한다고 생각하십니까? 처음에는 문자열 하나를 반복하고 시작과 끝 위치를 하나의'LinkedList '(또는 두 개를 가질 수 있습니다 : 시작과 끝을 하나씩)로 저장 한 다음 regex-free를 통해 다른 마술을하면 어떨까요? 코드도? –

답변

3

이 정규식보십시오 : 당신의 변수 만 ([a-zA-Z0-9_]를) 단어 문자를 포함 할 경우이 정규식이 될 것

(?<=\$)\b[^$]+\b(?=\$) 

더 나은 :

(?<=\$)\w+(?=\$) 
+0

이것은 또한 두 번째와 세 번째'$'사이의 문자열을 반환 할 것인가? – exhuma

+0

@exhuma : 당신이 옳다고 나는 믿는다. 나는 위의 예제 데이터가 주어 졌을 때 유효한 것으로 보이는 \ b'로 그것을 업데이트했다. 감사. – Senseful

0

귀하의 표현은의 시작 부분에 $ 일치 문자열. 그룹을 얻으려면 다음과 같이하고 싶습니다. @ "(\ $. +? \ $)"

편집 : 나는 $를 벗기는 것에 대해 조금은 놓쳤다. 대신이 버전을 사용해보십시오. \ $ (. +?) \ $