我使用的是javascript正则表达式引擎,我在使用正则表达式方面遇到了困难:
这是一个示例(它是我必须匹配的丑陋的js脚本提取):
id:"([^"]+)",name:"(?![^"]*mtr$)[^"]*"
我的正则表达式尝试:
Match[1] : 1441-aeze
Match[1] : 1441-aezb
Match[1] : 1441-aezc
Match[1] : 1441-aezf
匹配组1的预期结果:
reply()
但它匹配我样本的每个部分。我不明白为什么
这是reg101:Regex101 example
答案 0 :(得分:1)
这是使用此模式的一种方式
id:"([^"]+)",name:"(?:.(?!mtr))*?\}
这是另一个
id:"([^"]+)",name:"(?:[^m]|m(?!tr))*?\}
答案 1 :(得分:1)
我不确定,你前瞻中的$
应该做什么,但未转义它在字符串的末尾(或使用m-Modifier的行尾)匹配 - 但是没有比赛结束时的一条线的结尾。在您的模式中,"
表示匹配结束,因此您只需将$
替换为"
即可使其正常运行,例如id:"([^"]+)",name:"(?![^"]*mtr")[^"]*"
查看更新后的链接:https://regex101.com/r/tY1aG7/4