Регулярное выражение под названием группы: хороший или плохой?

Как я создаю группы с именами в C# с помощью Регулярных выражений, и это хорошая практика?

Заранее спасибо.

8
задан Alan Moore 24 January 2010 в 22:56
поделиться

3 ответа

Дайте группе имя метки:

(?<TagName>.*)

Я абсолютно уверен, что это хорошая практика. Подумайте, что произойдет, когда вы измените регулярное выражение. Если вы используете индексы для вытаскивания данных, то порядок этих групп может измениться. Назвав их, вы указываете именно те данные, которые, по вашему мнению, содержатся в группе, так что это тоже форма самодокументирования.

7
ответ дан 5 December 2019 в 17:37
поделиться

названные группы захвата хороши, обычно то с более простым регексом использование группы численного захвата, вероятно, более потоковое, некоторые советы здесь:

http://www.regular-expressions.info/named.html

1
ответ дан 5 December 2019 в 17:37
поделиться

Как и другие указали синтаксис (? ....) .

Вот пример, демонстрирующий, как создать группу под названием клавишу и группу, называемую значение , и одинаково важно (но часто забытые) - как извлекать группы по имени из Результирующий объект матча:

string s = "foo=bar/baz=qux";
Regex regex = new Regex(@"(?<Key>\w+)=(?<Value>\w+)");
foreach (Match match in regex.Matches(s))
{
    Console.WriteLine("Key = {0}, Value = {1}",
        match.Groups["Key"].Value,
        match.Groups["Value"].Value);
}

Я бы обычно не использовал названные группы для очень простых выражений, например, если есть только одна группа.

Для более сложных регулярных выражений со многими группами, содержащими сложные выражения, это, вероятно, было бы хорошей идеей использовать именованные группы. С другой стороны, если ваше регулярное выражение настолько сложно, что вам нужно сделать это, это может Быть хорошей идеей, чтобы увидеть, сможете ли вы решить проблему по-другому или разделить ее в свой алгоритм в меньший, проще шаги.

2
ответ дан 5 December 2019 в 17:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: