2011-09-12 3 views
3

다음 예제 문자열이 있습니다.
$0$aaaaa$1$bbbbb$2$cccccc
여기서 달러 기호 사이에는 숫자가 있습니다. 나는 숫자 + 1로 각 숫자를 대체하는 정규식을 사용하고자하는, 그래서 출력은 다음과 같아야합니다
$1$aaaaa$2$bbbbb$3$ccccccRegex는 모든 함수를 바꿉니다.

나는 C#에서 사용하여이 정규식을 할 수 있습니까? regex.Replace(...)으로

string s = "$0$aaaaa$1$bbbbb$2$cccccc"; 
Regex regex = new Regex(@"\$(?<myNumber>.*?)\$"); 

MatchCollection matches = regex.Matches(s); 

foreach (Match match in matches) 
{ 
    Console.WriteLine(match.Groups["myNumber"]); 
} 

Console.WriteLine("\n\nFinal string = " + s); 
Console.ReadKey(); 

내가 하나 개의 값으로 모두 대체 할 수있는,하지만 난 어떻게 정규식 개별적으로 각 숫자를 대체하는 아무 생각이 :
나는 모든 번호를 찾는 방법을 알고있다.

누구든지 어떻게하는지 압니까?

안부,
마르신

답변

9
var result = Regex 
    .Replace(input, @"(?<=\$)\d+(?=\$)", m => (int.Parse(m.Value) + 1).ToString()); 
+3

1 인상적! 관심있는 사람은 (? <= ...) 및 (? =) 최적화의 의미 [여기] (http://msdn.microsoft.com/en-us/library/az24scfc.aspx#grouping_constructs) – bottlenecked

+0

@bottlenecked, 고마워! :-) –

+0

니스, thanks :) – mj82

관련 문제