匹配第一个正则表达式浮点百分比?

时间:2013-08-21 23:36:27

标签: c# regex

我正在尝试匹配字符串中的perecent值:

Starting task, 13.73 % (11.17 fps, avg 14.66 fps, ETA 00h03m53s)

问题是我的正则表达式有效,但它匹配所有三个浮点值:

\d*\.\d+%?

我得到了三个值:

11.17 14.66

  • 13.73
  • 11.17
  • 14.66

我只想匹配13.73。

有什么建议吗?

1 个答案:

答案 0 :(得分:3)

您的模式存在的问题是,它会匹配一个紧跟可选百分号的数字。由于百分比不是模式的必需部分,因此其他数字恰好匹配。

您可以尝试此模式(请注意\s*表示零个或多个空格字符):

\d*.\d+\s*%

这将返回13.73 %。如果您不想包含%符号,请使用群组:

(\d*.\d+)\s*%

然后提取相关文本。

或者,您可以使用前瞻:

\d*.\d+(?=\s*%)