该用户不存在 发表于 2022-3-22 11:57

董卓 发表于 2022-3-22 12:05

这么多年就感觉没写过.?!
需求是什么?

上个jsfiddlr调啊
s1这瞎眼高亮

该用户不存在 发表于 2022-3-22 12:08

5long 发表于 2022-3-22 12:16

用个交互式的工具来调试会比较方便:
https://regexr.com/

另外个人不推荐用 (.*?) 这种写法:
在某些实现方案里匹配效率低, 容易让人理解错误
可以考虑改用 ([^"]*) , 明确表达"我要匹配一串字符, 其中应该没有双引号"

该用户不存在 发表于 2022-3-22 12:21

xiaowufeixia 发表于 2022-3-23 01:04

试试这个?不知道有没有理解错:

(-0\"\]\[-ext-contains=\"([^”\]\[])*\"\])(?!,)

另外自己写的时候一般减号和等号不用转义,所以见到楼主的写法感到还挺新奇。

猜测原来的表达式匹配整行的原因是楼主以为(.*?)会懒匹配到逗号之前,实际上为了尽可能匹配(这里指加上了后面的否定后向断言),从逗号到行末都被纳入了这个(.*?)里,换言之这里贪心匹配的优先级比懒惰匹配更高。

不过以上也是照答案来强行解释了,不同的正则实现有不同的行为非常正常,多踩坑就好。

该用户不存在 发表于 2022-3-23 11:04

页: [1]
查看完整版本: [已结]正则表达式的正向否定预查,无法筛选某些字符串