无法通过否定前瞻来否定案例 'qwe'

Failing to negate case 'qwe' with negative lookahead

怎么了?我试图排除 text("123", qwe); 个案例,但它匹配

text\([^,]+,\s*(?!qwe)[^\)]*\);

如何让它只接受第二个参数不是 "qwe" 的函数?

text\([^,]+,\s*(?:(?!\bqwe\b)[^\s)]*)\);

尝试 this.See 演示。

https://regex101.com/r/vD5iH9/12

你的正则表达式 text([^,]+,\s*(?!qwe)[^)]*); 说在捕获 text("123", 捕获 space 之后没有跟随 qwe。但是在那之后你的正则表达式 [^)]* 捕获了所有包括 space.If 你包括 [^)\s]* 然后它就不能 cpature 并且它会 pass.See 这里

https://regex101.com/r/vD5iH9/13

但这只有在有 space 时才会通过。如果没有 space,您的逻辑将 fail.So 在每个 character 之后进行万无一失的检查使用 (?:(?!\bqwe\b)[^\s)]*

进行前瞻