1

我正在尝试匹配字符串中的百分比值:

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。

有什么建议吗?

4

1 回答 1

3

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

您可以尝试这种模式(注意这\s*意味着零个或多个空格字符):

\d*.\d+\s*%

这将返回13.73 %。如果您不想包含该%标志,请使用一个组:

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

然后提取相关文本。

或者,您可以使用前瞻:

\d*.\d+(?=\s*%)
于 2013-08-21T23:40:11.060 回答