Класс Match
имеет свойство name, но это всегда "0"
.
В частности,
Regex.Matches("abcd", "b|d")
дает два совпадения, которые я могу различить только ценность. То же самое с заменами:
Regex.Replace("abcd", "b|d", m => m.Name) // gives a0b0
Это выше дает a0b0
, поэтому имя не различает их, как и ничего в классе Match
.
Другие группы не Это также не поможет, поскольку
Regex.Replace("abcdef", "(b)|(d)|(f)", m => m.Groups.Count.ToString())
дает a4c4e4
, поэтому при каждой оценке совпадения все группы в матче совпадают.
Это означает, что при использовании * можно использовать фактически совпадающая строка , ie. значение, невозможно узнать что-либо еще об этом, например, с каким подэлементом в регулярном выражении он был сопоставлен.
Это необходимо для выполнения нескольких различных замен с одним вызовом замены, что потенциально намного быстрее чем использовать один вызов замены для каждого шаблона, если имеется много шаблонов замены.
Правильно ли это печальное заключение или я что-то упустил?