Допустим, у меня есть следующее регулярное выражение:Получить имени группы подшаблоном из объекта .NET регулярное выражение
var r = new Regex("Space(?<entry>[0-9]{1,3})");
Тогда у меня есть строка:
"Space123"
Вот моя программа:
void Main()
{
Regex r = new Regex("Space(?<entry>[0-9]{1,3})", RegexOptions.ExplicitCapture);
foreach (Match m in r.Matches("Space123")){
m.Groups["entry"].Dump(); //Dump() is linqpad to echo the object to console
}
}
Что я хочу знать, есть ли способ получить часть регулярного выражения, которая соответствует? В этом случае:
(?<entry>[0-9]{1,3})
Я не могу найти его нигде в объекте, но можно было бы подумать, что он будет доступен.
Я не уверен в вашем вопросе ... выражение регулярного выражения, которое соответствует шаблону, который вы использовали 'Space (? [0-9] {1,3}) '. Это то, что вам нужно? –
Правильно, но я хочу получить его из объекта, только часть захвата, а именно ( [0-9] {1,3}), а не всю строку. –
Matt
Насколько я знаю, регулярные выражения обычно реализуются путем создания конечной машины за кулисами, которая анализирует синтаксис и выплевывает логический результат. Поэтому одно регулярное выражение - это, в основном, его собственная автономная система. Единственный способ, которым я могу сделать то, что вы хотите, - сделать несколько меньших регулярных выражений и сопоставить их со своим текстом отдельно. – cmcquillan