Regex 查找前面有另一个字符串的字符串的匹配项

Regex 查找前面有另一个字符串的字符串的匹配项,regex,Regex,我想找到一个10位字符的最后一个匹配项,该字符中有createdtimestamps= 我编写了一个正则表达式来查找最后出现的10位字符,但无法将createdtimestamps=条件添加到其中 我的正则表达式是(\d{10}(?。*\d{10})) 但它也匹配不存在created timestamps=的位置 示例文本: 来自 应用source=API威胁评分=78创建时间戳=1540273980, 1540352100, 1540795080, 1541825820, 1544766960

我想找到一个10位字符的最后一个匹配项,该字符中有createdtimestamps=

我编写了一个正则表达式来查找最后出现的10位字符,但无法将createdtimestamps=条件添加到其中

我的正则表达式是
(\d{10}(?。*\d{10}))

但它也匹配不存在created timestamps=的位置

示例文本:

来自 应用source=API威胁评分=78创建时间戳=1540273980, 1540352100, 1540795080, 1541825820, 1544766960 _id=jhjshwymAFgwAMTyAEtF user_name=x.x.x.message=From Last 事件:大量删除。1.0分钟内完成96次。发生的事情 估计有1%的几率被 正常。插入的时间戳=2018-12-14T06:54:26活动类型=删除

预期输出:1544766960应该是您想要的:


(?您可以使用这样的模式:
创建的时间戳=(\d{10})(?:,(\d{10}))*

说明:

created\u timestamps=
-按字面意思匹配
created\u timestamps=

(\d{10})
-匹配十位数字并将其存储在第一个捕获组中

(?:…)
-非捕获组

,(\d{10})
-匹配逗号、空格和十位数字,并将其存储在捕获组中

(\d{10})(?:,(\d{10}))*
-匹配
(\d{10})(?:,(\d{10}))
零次或多次

最后一部分是魔术开始的地方:如果你有一个以上的10位数字,那么你的数字将被存储在第二个捕获组中,因为它被量化了,所以在第二个捕获组中会存储最后一个匹配,这将是你要寻找的数字

另一方面,当只有一个数字时,它将存储在第一个捕获组中,并且可以从那里获得(将没有第二个捕获组)

所以,匹配您的模式,检查第二个捕获组是否存在,如果存在,它就是您要查找的号码,如果不存在,则它位于第一个捕获组中

或者,您可以使用
created_timestamps=(?:\d{10}[,]++)+(\d{10})

这项工作:
(?尝试此函数。使用regExp分组功能捕获所需数据

    function Replace_(str) {
       var patt = /.*created_timestamps.*(\d{10}).*/i;
       var res = str.replace(patt, '$1');
       return res;
    }

尝试放置And条件,但最后一个反向查找停止工作此工作:
(?此工作正常。谢谢:D请在下面用绿色勾号标记正确答案?此操作也有效,但唯一的问题是我的解决方案限制仅在开始时定义捕获组。您无法动态选择它