C#Regex捕获命名组中的百分比

时间:2015-08-31 19:15:22

标签: c# regex

我有以下正则表达式模式:

-?\d+(?:\.\d+)?%

哪种方法可以很好地匹配百分比。现在我需要的是能够在一个组中获得它的数值。

我尝试了以下内容:

(?<percentage>-?\d+(?:\.\d+)?)%   
(?<percentage>-?\d+(\.\d+)?)%  
(?<percentage>(-?\d+(?:\.\d+)?))%   
(?<percentage>(-?\d+(\.\d+)?))%

它们都不起作用,我只得到百分位数的整数部分。

如何实现这一目标?

2 个答案:

答案 0 :(得分:1)

正确的正则表达式是:

(?<percentage>-?(?:\d*\.?\d+|\d+\.?\d*))%

答案 1 :(得分:0)

我尝试了以下示例,它们似乎都有效(使用您尝试过的第一个正则表达式):

Regex.Match("12%", @"(?<percentage>-?\d+(?:\.\d+)?)%").Groups["percentage"].Value 
// 12

Regex.Match("12.345%", @"(?<percentage>-?\d+(?:\.\d+)?)%").Groups["percentage"].Value
// 12.345

Regex.Match("-12.345%", @"(?<percentage>-?\d+(?:\.\d+)?)%").Groups["percentage"].Value
// -12.345

您可能会注意到在正则表达式字符串前面使用“@” - 也许这就是您遇到的问题。