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
答案 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)
price1
,price2
和price3
是正则表达式的作者给括号中的组提供的名称。
例如,在(?<price1>[0-9]+)
中,正则表达式引擎将捕获一个或多个数字,并将该字符串放入名为price1
的组中。
答案 3 :(得分:0)
http://www.regular-expressions.info/refext.html
圆括号将它们之间的正则表达式组合在一起。它们捕获与其中正则表达式匹配的文本,可以通过尖括号之间的名称引用。名称可能由字母和数字组成。