Регулярное выражение .Net: что означают острые скобки в группе захвата? - PullRequest
0 голосов
/ 25 августа 2010
SearchPattern = (?<price1>[0-9]+)(?<price2>[9]?)+(.)(?<price3>[9]{2})

ноль или более совпадений чисел 0-9, за которыми следуют одна или несколько цифр 9, за которыми следуют 2 необязательные цифры после точки.

Я не понял, что означают цена1, цена2, цена3?

ReplacementPattern = (?<price1>[0-9]+)(?<price2>[0-9]{1})+(.)(?<price3>[0-9]{2}) 
Replacement String = ${price1}9

Ответы [ 4 ]

3 голосов
/ 25 августа 2010

Они называются именованными группами захвата .Позволяет вам ссылаться на группу захвата по имени при замене текста или получении фактического совпадающего текста.

Например:

var match = Regex.Match("349.99", "(?<price1>[0-9]+)(?<price2>[9]?)+(.)(?<price3>[9]{2})");
Console.WriteLine("price1 = {0}", match.Groups["price1"].Value);

Это напечатает price1 = 349.

0 голосов
/ 25 августа 2010

price1, price2 и price3 - имена, данные автором регулярного выражения группам в скобках.

Так, например, в (?<price1>[0-9]+) механизм регулярных выражений захватит одну или несколько цифр и поместит строку в группу с именем price1.

0 голосов
/ 25 августа 2010

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

Круглые скобки сгруппируют регулярное выражение между ними.Они захватывают текст, соответствующий регулярному выражению внутри них, на которое можно ссылаться по имени, заключенному в острые скобки.Имя может состоять из букв и цифр.

0 голосов
/ 25 августа 2010

Какая точка?

(.) будет соответствовать любому символу, а не только ..

Вы, вероятно, хотите (\.).

Редактировать: Ваша проверка на 2 дополнительные цифры также неверна. Вам нужно будет более подробно объяснить, что вы ищете, чтобы кто-нибудь мог предложить решение.

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