Можете ли вы назвать группу «Полное совпадение» в регулярном выражении?

#c# #regex #naming

#c# #регулярное выражение #именование

Вопрос:

Например, у меня есть регулярное выражение с именованными группами;

A=(?<A>.*),B=(?<B>.*),C=(?<_C>.*) пример регулярного выражения 101

Группы совпадений, в данном случае A, B и _C, повторяются для установки некоторых данных в файле. Однако _C не используется, поэтому код пропускает это, потому что имя группы начинается с _ .

Всегда существует группа «Полного соответствия», которая имеет имя 0. Фактически и соответствующей группе, которая не названа, будет присвоен номер, как и по умолчанию для неназванных групп.

Мне было любопытно, можно ли присвоить «Полному совпадению» другое имя, например _Full_Match, чтобы приведенная выше логика все еще применялась? В противном случае итерация всех групп включает Group["0"] в себя то, что я не хочу.

 //c# example with System.Linq to iterate groups
foreach (var x in regex.GetGroupNames()
             .Where(y => y != "0" amp;amp; y.Substring(0, 1) != "_"))
{
        /// do something with x
}
 

Комментарии:

1. Вы не можете использовать regex.GetGroupNames().Skip(1).Where(y => y.Substring(0, 1) != "_") ?

2. @vc74 это работает как решение, но не отвечает на вопрос о фактическом присвоении имени полному совпадению.

3. Боюсь, у вас нет возможности назвать эту группу. Одна вещь, которую вы могли бы сделать, это вместо использования _ в качестве начального символа для игнорирования групп, использовать целочисленную форму и исключить любое имя группы, которое не может быть проанализировано как целое число (включая полное совпадение)

4. интересный вопрос, но я должен согласиться с @vc74, основываясь на моих исследованиях