我正在尝试匹配字符串中的perecent值:
Starting task, 13.73 % (11.17 fps, avg 14.66 fps, ETA 00h03m53s)
问题是我的正则表达式有效,但它匹配所有三个浮点值:
\d*\.\d+%?
我得到了三个值:
11.17 14.66
我只想匹配13.73。
有什么建议吗?
答案 0 :(得分:3)
您的模式存在的问题是,它会匹配一个紧跟可选百分号的数字。由于百分比不是模式的必需部分,因此其他数字恰好匹配。
您可以尝试此模式(请注意\s*
表示零个或多个空格字符):
\d*.\d+\s*%
这将返回13.73 %
。如果您不想包含%
符号,请使用群组:
(\d*.\d+)\s*%
然后提取相关文本。
或者,您可以使用前瞻:
\d*.\d+(?=\s*%)