Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果有两个值,则捕捉2,如果不是';t、 用正则表达式捕捉第一个_Javascript_Regex - Fatal编程技术网

Javascript 如果有两个值,则捕捉2,如果不是';t、 用正则表达式捕捉第一个

Javascript 如果有两个值,则捕捉2,如果不是';t、 用正则表达式捕捉第一个,javascript,regex,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.,]+)/

我绞尽脑汁想找到解决办法

我需要捕捉字符串中的一些特定值。此字符串在治疗前具有以下格式:

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.,]+)/
所以。。我需要捕捉最正确的值,即总数,我很难弄清楚如果第一个值存在,如何提取第二个值,如果第二个值不存在,如何提取第一个值

我试着这样做:

5593 DSR Sobreaviso [ 032] 0,00 54,38 01 SRM Sim [  01] 10,00
/.*?\s(?:5593)\s.*?\s([\d.,]+)]\s([\d.,]+)/
我需要明确地传递最正确的值,因为这些片段位于一个巨大的文本(超过50k个单词)中

签出此示例:

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

谢谢。

试试看

/[\d.,]+$/

它只是查找线路上的最后一个号码

编辑:

从你的评论中,我对这个问题有了更好的理解

那么像这样的东西怎么样:

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

这里是对jsfiddle的不作为:

我假设您现在已经有了答案,但如果没有,这有帮助吗

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

也许一个正则表达式,至少就其本身而言,是这个工作的错误工具。
我很难弄清楚,如果第一个值存在,如何提取第二个值,如果第二个值不存在,如何提取第一个值。“
-这是一个令人难以置信的模棱两可的问题是什么?这是一个简单的要求。。如果第一个值存在,则忽略它并捕捉第二个值,如果没有第二个值,则捕捉第一个值..你所说的“处理”到底是什么意思,为什么不在值和拆分之间添加管道或其他东西?我正在为一个空间替换多个空格和换行符。我没有收到你的建议,你能解释一下吗?我正在处理文本,所以没有线条Dylan。我每多个空格换一次,换行符换一个空格。