Есть ли способ, чтобы Regex.Match предоставлял только предполагаемую группу захвата? - PullRequest
1 голос
/ 03 апреля 2019

Кажется, что работает c # regex.match - единственные возвращаемые значения группы захвата включают всю строку, сопоставленную с шаблоном.Вместо этого я просто хочу 1 доллар.Теперь я должен сделать этот второй шаг процесса, чтобы очистить результат.Есть ли более чистый способ, где его можно уменьшить до 1 шага?

var lineText = @"Reservations 03Mar19";
var m1Pattern = @"^\s*Reservations.*\b(\d{2}\w{3}\d{2})$";

Match m1 = Regex.Match(lineText, m1Pattern);
if (m1.Success) MyDate = Regex.Replace(m1.Groups[0].Captures[0].Value, m1Pattern, @"$1");

Ответы [ 2 ]

1 голос
/ 03 апреля 2019

вы можете использовать ?: в ваших группах, который говорит регулярному выражению не захватывать эту группу:

(?:this group is not captured(but this one is))

Сравните это Демо и это

А вот демоверсия C #

0 голосов
/ 03 апреля 2019

Использование MyDate = m1.Groups[1].Value должно делать то, что вы хотите.

...