Regex 查找前面有另一个字符串的字符串的匹配项
我想找到一个10位字符的最后一个匹配项,该字符中有createdtimestamps= 我编写了一个正则表达式来查找最后出现的10位字符,但无法将createdtimestamps=条件添加到其中 我的正则表达式是Regex 查找前面有另一个字符串的字符串的匹配项,regex,Regex,我想找到一个10位字符的最后一个匹配项,该字符中有createdtimestamps= 我编写了一个正则表达式来查找最后出现的10位字符,但无法将createdtimestamps=条件添加到其中 我的正则表达式是(\d{10}(?。*\d{10})) 但它也匹配不存在created timestamps=的位置 示例文本: 来自 应用source=API威胁评分=78创建时间戳=1540273980, 1540352100, 1540795080, 1541825820, 1544766960
(\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请在下面用绿色勾号标记正确答案?此操作也有效,但唯一的问题是我的解决方案限制仅在开始时定义捕获组。您无法动态选择它