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

时间:2013-10-18 14:18:07

标签: regex

我有一个类似于以下格式的字符串:

<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);

但如何避免“ms in last? 什么应该是正则表达式?

6 个答案:

答案 0 :(得分:1)

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

Total:.*(?=ms)

如果您的输出始终采用此格式,则上述正则表达式适用于您。

(?=ms)被称为positive lookahead。在这种情况下,它正在寻找一个后跟 ms 的字符串,但不会在匹配中包含 ms

答案 1 :(得分:0)

这应匹配:Total: \d+\.\d+ms

\d+匹配任意位数,\.匹配小数点。

答案 2 :(得分:0)

捕获任何非“+”的内容:

([^+]+)

答案 3 :(得分:0)

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

 /^Total: *[^ ]+/m

String#match方法中。

答案 4 :(得分:0)

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

会工作。

答案 5 :(得分:0)

/Total:\s*\d+\.\d+(?=ms)/应该为你做。

与提出的其他答案一样,总计:匹配文本。但是这种模式在“Total:”文本之后的空白空间方面提供了更大的灵活性,并且在小数点之前和之后的数字字符数量方面具有更大的灵活性。最后的正向前瞻匹配,但不包括“ms”文本。

<强>小提琴

http://refiddle.com/by/tim-schreiber/what-is-the-match-regex-for-string

希望这有帮助!