正则表达式匹配不以特定字符串结尾的组
Regex match a group not ending with specific string
我正在使用javascript正则表达式引擎,我有困难使用正则表达式:
这是一个样本(这是一个丑陋的js脚本提取什么我必须匹配):
{data = function() {[{id:"1441-aeze",name:"theme1"},{id:"1441-aezb",name:"theme2"},{id:"1441-aezc",name:"theme3-a"},{id:"1441-aezd",name:"theme1-mtr"},{id:"1441-aezf",name:"theme4"}]}}
My regex try:
id:"([^"]+)",name:"(?![^"]*mtr$)[^"]*"
匹配组1的预期结果:
Match[1] : 1441-aeze
Match[1] : 1441-aezb
Match[1] : 1441-aezc
Match[1] : 1441-aezf
但它与我样本的每一部分都匹配。我不明白为什么
下面是reg101: Regex101示例
我不确定,您的展望中的$
应该做什么,但未转义的它在字符串的末尾匹配(或使用m-Modifier的行结束)-但是在您的匹配结束时没有行结束。在您的模式中,"
表示匹配结束,因此您可以将$
替换为"
以使其工作,如id:"([^"]+)",name:"(?![^"]*mtr")[^"]*"
查看更新后的链接:https://regex101.com/r/tY1aG7/4
下面是使用这个模式的一种方法
id:"([^"]+)",name:"(?:.(?!mtr))*?'}
演示这里有另一个
id:"([^"]+)",name:"(?:[^m]|m(?!tr))*?'}
演示相关文章:
- 创建属性值数组,其中属性名称以特定字符串结尾
- 如何删除字符串开头和结尾的换行符
- 用于删除字符串中字符开头到结尾的正则表达式
- 从结尾或开头修剪字符串
- 正则表达式能否匹配字符串开头或结尾的字符(但不能同时匹配)
- 将一个字母结尾到特定字符串的末尾
- 如何从以某个单词(regexp)结尾的字符串中获取id
- javascript正则表达式浮点数,以字符串结尾
- 在字符串的开头和结尾搜索相同的数字
- 如何编写RegExpression For在javascript中不允许在字符串中使用前导和结尾空格
- 正则表达式 - 字符串不能以空格开头,以空格结尾,并且连续包含几个空格
- 在字符串的开头和结尾添加一个字符
- JavaScript WebSocket 非以 null 结尾的字符串
- 将特定字符串的结尾从模式的末端剥离
- 如何选择以字符串开头但没有't在jQuery中以不同的字符串结尾
- 匹配以特定字符串开头并以特定字符串结尾的字符串的内容
- JavaScript RegEx字符串结尾不起作用
- 字符串的正则表达式,这些字符串不以指定的子字符串结尾
- 正则表达式查找字符串结尾
- 正则表达式匹配不以特定字符串结尾的组