regex 什么是字符串的匹配正则表达式

b4qexyjb  于 2023-05-08  发布在  其他
关注(0)|答案(6)|浏览(215)

我有一个字符串如下格式:

<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应该是什么呢?

hk8txs48

hk8txs481#

我能想到的最简单的解决方案是:

Total:.*(?=ms)

如果你的输出总是这种格式,上面的正则表达式应该对你有用。
(?=ms)称为positive lookahead。在这种情况下,它将查找后跟ms的字符串,但不会在匹配中包含ms

zsohkypk

zsohkypk2#

这应该匹配:Total: \d+\.\d+ms
其中\d+匹配任意位数,\.匹配小数点。

hts6caw3

hts6caw33#

捕获任何不是' + '的内容:

([^+]+)
ki0zmccv

ki0zmccv4#

如果支持MULTILINE开关,则可以使用以下正则表达式:

/^Total: *[^ ]+/m

String#match方法中。

quhf5bfb

quhf5bfb5#

Total: [0-9]+(\.[0-9]{2})?

会有用的。

js5cn81o

js5cn81o6#

/Total:\s*\d+\.\d+(?=ms)/应该为你做的。
与其他建议的答案一样,总计:与文本匹配。但是这种模式在“Total:”文本后白色方面提供了更大的灵活性,在小数点前后的数字字符数量方面也提供了更大的灵活性。结尾处的正向前看匹配但不包括“ms”文本。
希望这有帮助!

相关问题