正则表达式.Net:尖锐括号在捕获组中意味着什么?

时间:2010-08-25 05:19:28

标签: c# regex

SearchPattern = (?<price1>[0-9]+)(?<price2>[9]?)+(.)(?<price3>[9]{2})

零个或多个匹配的0-9个数字后跟一个或多个9后跟2个可选数字后点。

我不明白,price1,price2,price3是什么意思?

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

4 个答案:

答案 0 :(得分:3)

他们是named capturing groups。允许您在替换文本或检索实际匹配文本时按名称引用捕获组。

例如:

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

这将打印price1 = 349

答案 1 :(得分:0)

什么点?

(.)将匹配任何字符,而不仅仅是.

您可能想要(\.)

编辑:您对2个可选数字的检查也不正确。你需要更详细地解释你在寻找什么,任何人都可以建议解决方案。

答案 2 :(得分:0)

price1price2price3是正则表达式的作者给括号中的组提供的名称。

例如,在(?<price1>[0-9]+)中,正则表达式引擎将捕获一个或多个数字,并将该字符串放入名为price1的组中。

答案 3 :(得分:0)

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

  

圆括号将它们之间的正则表达式组合在一起。它们捕获与其中正则表达式匹配的文本,可以通过尖括号之间的名称引用。名称可能由字母和数字组成。