Match.Groups []. Value возвращает повторяющиеся значения - PullRequest
0 голосов
/ 24 июля 2011

Ввод 55, и мое регулярное выражение ^(5{2})$. Так что в идеале (по крайней мере для меня) это должно возвращать каждую строку, которая начинается с 5 и заканчивается на 5 правильно?

Но когда мой c # выглядит следующим образом:

Match match = Regex.Match(input, String.Format(@"{0}", regex));
string outcome = null;

if (match.Success)
{
    for (int i = 0; i < match.Groups.Count; i++)
    {
        outcome += match.Groups[i].Value;
    }
}

Почему моя строка outcome возвращает 5555 вместо 55?

Когда я удаляю скобки из регулярного выражения, оно отлично работает.

1 Ответ

4 голосов
/ 24 июля 2011

Первый элемент в match.Groups содержит все совпадения, найденные вашим регулярным выражением.Второй элемент - это то, что записано в скобках.

Поскольку регулярное выражение и входные данные по сути являются одной и той же строкой "55", вы получите два одинаковых соответствия: одно для всего сопоставленного ввода, а другое для группы захватаскобки).

Оба они объединены, и вы получите "55" + "55", что составляет "5555".

...