Несохраняющие скобки в C#
Обычные круглые скобки в шаблоне одновременно
группируют часть выражения и создают группу.
Ее текст потом читают из Groups[n].
Если нужна только группировка, используют
несохраняющие скобки (?:...):
using System.Text.RegularExpressions;
string txt = "abab123";
Match match = Regex.Match(txt, @"(ab)+([1-9]+)");
Console.WriteLine(match.Groups[1].Value);
Console.WriteLine(match.Groups[2].Value);
Здесь Groups[1] хранит последний повтор
"ab", а Groups[2] - число. Если первая
пара скобок нужна только для повторения, ее
заменяют на (?:ab)+:
using System.Text.RegularExpressions;
string txt = "abab123";
Match match = Regex.Match(txt, @"(?:ab)+([1-9]+)");
Console.WriteLine(match.Groups[1].Value);
После замены остается одна группа с числом. Несохраняющие скобки удобны, когда повторение или альтернатива нужны в шаблоне, но отдельная группа для этой части не требуется.
Дана строка:
string txt = "xyxy12";
Найдите повтор xy и число после него, сохранив в группе только число.