无法通过否定前瞻来否定案例 '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)]*
进行前瞻
怎么了?我试图排除 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)]*