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。我每多个空格换一次,换行符换一个空格。