如果有两个值,请抓住2,如果不是,请使用正则表达式

时间:2016-01-15 03:41:40

标签: javascript regex

我为此找到了解决办法。

我需要在字符串中捕获一些特定值。在治疗之前,这个字符串有这种格式:

5593 DSR Sobreaviso   [ 032]   0,00 54,38
01 SRM Sim            [  01]        10,00

治疗后,字符串将是这样的:

5593 DSR Sobreaviso [ 032] 0,00 54,38 01 SRM Sim [  01] 10,00

所以..我需要捕获最正确的值,即总数,并且我很难弄清楚如果第一个值存在时如何提取第二个值,并提取第一个值如果第二个值不存在。

我试着这样:

/.*?\s(?:5593)\s.*?\s([\d.,]+)]\s([\d.,]+)/

我需要明确传递最正确的值,因为这些片段在一个巨大的文本内(超过50k字)。

查看此示例:http://regexr.com/3cj6e

当我通过5593时,正则表达式将捕获0,00,但我需要54,38 ..当我通过01时,正则表达式将捕获正确的值。

感谢。

2 个答案:

答案 0 :(得分:1)

我认为你现在有了答案,但如果没有,这有帮助吗?

/\b(?:5593)\s+[\w ]+\s+\[[ \d]+\]\s+(?:[\d]+[.,][\d]+\s+)?([\d]+[.,][\d]+)/

答案 1 :(得分:0)

尝试

/[\d.,]+$/

http://regexr.com/3cj6k

它只是查找该行的最后一个数字。

编辑:

从你的评论中我更好地理解了这个问题。

那样的事情怎么样:

/([\d.,]+)\s([\d.,]+)\s[a-z]/gi

这里是对jsfiddle的不作为:https://jsfiddle.net/zzvur713/3/