我有以下正则表达式模式:
-?\d+(?:\.\d+)?%
哪种方法可以很好地匹配百分比。现在我需要的是能够在一个组中获得它的数值。
我尝试了以下内容:
(?<percentage>-?\d+(?:\.\d+)?)%
(?<percentage>-?\d+(\.\d+)?)%
(?<percentage>(-?\d+(?:\.\d+)?))%
(?<percentage>(-?\d+(\.\d+)?))%
它们都不起作用,我只得到百分位数的整数部分。
如何实现这一目标?
答案 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
您可能会注意到在正则表达式字符串前面使用“@” - 也许这就是您遇到的问题。