C # Regexp: Как извлечь переменные $ 1, $ 2 из соответствия - PullRequest
5 голосов
/ 18 августа 2010

В настоящее время .NET использует свое собственное нестандартное соглашение о присвоении имен групп, которое является собакой.Я хотел бы включить стандартное использование групп захвата $ 1, $ 2 в C #.

Есть ли у них какой-либо способ сделать это, или если нет, это какие-либо сторонние механизмы регулярных выражений, доступные для использования, которые действительно реализуют такую ​​функциональность.

Ответы [ 2 ]

9 голосов
/ 18 августа 2010

Не на 100% понятно, что вы ищете, но звучит так, будто вы хотите получить значение для данной группы в соответствующем регулярном выражении.Это определенно возможно в C # (и .Net в целом).

Например.

var regex = new Regex(@"(a+)(\d+)");
var match = regex.Match("a42");
Console.WriteLine(match.Groups[1].Value); // Prints a
Console.WriteLine(match.Groups[2].Value); // Prints 42

Хотя я не использую Mono регулярно, я был бы очень удивлен, если бы это не сработало там.

4 голосов
/ 18 августа 2010

В соответствии с C # регулярными выражениями , Используя замещающие строки с Regex.Replace , вы можете использовать следующий код:

string s = Regex.Replace("  abra  ", @"^\s*(.*?)\s*$", "$1");
...