2013-07-28 3 views
1

Учитывая регулярное выражение с 2 группами:Regex с C#: Как заменить строку, которая соответствует конкретной группы

Regex regex = new Regex("^[^{}]*(\\{([^}]*)\\})[^{}]*$"); // group 1 matches {exp} (with braces) 
                  // group 2 matches exp (without braces) 

Как заменить матч в первой группе?

string inputStr = "mystring{valueToRaplace}" 
string s = regex .Replace(inputStr, m => ???); 

Например, я хочу, чтобы указать, следует ли сопоставлять и заменить {valueToRaplace} (группа 1) или valueToRaplace (группа 2).

+0

Ты вопрос немного неясно. Что бы вы хотели, чтобы результат был? –

ответ

0

Я думаю, что это то, что вы хотите

Regex regex = new Regex("^[^{}]*(\\{([^}]*)\\})[^{}]*$"); 
string inputStr = "mystring{valueToRaplace}"; 
string replaceWithThis = "Replace with this"; 

//change m.Groups[2] to whichever index you want to replace 
string final = regex.Replace(inputStr, 
        new MatchEvaluator(new Func<Match, string>(m => inputStr.Replace(m.Groups[2].Value, replaceWithThis)))); 
+0

Отлично, это именно то, что мне нужно ;-) – j3d

Смежные вопросы