如果有两个值,则捕获 2,如果不是,则使用正则表达式捕获第一个值

If there are two values, catch the 2, if isn't, catch the first with regex

本文关键字:如果不 第一个 正则表达式 两个 如果      更新时间:2023-09-26

我正在打破我的头来寻找解决方案。

我需要在字符串中捕获一些特定值。此字符串在处理之前具有以下格式:

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 时,正则表达式将捕获正确的值。

谢谢。

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

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

尝试使用

/['d.,]+$/

http://regexr.com/3cj6k

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

编辑:

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

那么像这样的事情怎么样:

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

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

相关文章: