我有一个字符串如下格式:
<pre>
===
RESULTS (means and 95% confidence intervals)
---
Total: 1607.3ms +/- 7.6%
---
3d: 82.7ms +/- 43.6%
cube: 38.1ms +/- 37.5%
</pre>
我希望输出像这样:总计:1607.3
我是这样用的:
var reg = /\w.*:\D.*[ms]/gi
var result = "mytext".match(reg);
但如何避免“最后”呢?那么,regex应该是什么呢?
6条答案
按热度按时间hk8txs481#
我能想到的最简单的解决方案是:
如果你的输出总是这种格式,上面的正则表达式应该对你有用。
(?=ms)
称为positive lookahead。在这种情况下,它将查找后跟ms的字符串,但不会在匹配中包含ms。zsohkypk2#
这应该匹配:
Total: \d+\.\d+ms
其中
\d+
匹配任意位数,\.
匹配小数点。hts6caw33#
捕获任何不是'
+
'的内容:ki0zmccv4#
如果支持MULTILINE开关,则可以使用以下正则表达式:
在
String#match
方法中。quhf5bfb5#
会有用的。
js5cn81o6#
/Total:\s*\d+\.\d+(?=ms)/
应该为你做的。与其他建议的答案一样,总计:与文本匹配。但是这种模式在“Total:”文本后白色方面提供了更大的灵活性,在小数点前后的数字字符数量方面也提供了更大的灵活性。结尾处的正向前看匹配但不包括“ms”文本。
希望这有帮助!