我为此找到了解决办法。
我需要在字符串中捕获一些特定值。在治疗之前,这个字符串有这种格式:
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时,正则表达式将捕获正确的值。
感谢。
答案 0 :(得分:1)
我认为你现在有了答案,但如果没有,这有帮助吗?
/\b(?:5593)\s+[\w ]+\s+\[[ \d]+\]\s+(?:[\d]+[.,][\d]+\s+)?([\d]+[.,][\d]+)/
答案 1 :(得分:0)
尝试
/[\d.,]+$/
它只是查找该行的最后一个数字。
编辑:
从你的评论中我更好地理解了这个问题。
那样的事情怎么样:
/([\d.,]+)\s([\d.,]+)\s[a-z]/gi
这里是对jsfiddle的不作为:https://jsfiddle.net/zzvur713/3/