怎么了?我正在尝试排除text("123", qwe);
案例,但它匹配
text\([^,]+,\s*(?!qwe)[^\)]*\);
如何让它只接受第二个参数不是"qwe"
的功能?
答案 0 :(得分:1)
text\([^,]+,\s*(?:(?!\bqwe\b)[^\s)]*)\);
试试这个。看看演示。
https://regex101.com/r/vD5iH9/12
你的正则表达式text([^,]+,\s*(?!qwe)[^)]*);
表示在text("123",
抓取space
之后没有被qwe
跟踪后,但是之后你的正则表达式[^)]*
会抓住所有包含空格的内容如果你包括[^)\s]*
那么它将无法复制,它会通过。见这里
https://regex101.com/r/vD5iH9/13
但只有在space
时才会通过。如果没有空格,你的逻辑就会失败。所以要在evry character
之后使用(?:(?!\bqwe\b)[^\s)]*
进行前瞻性的万无一失的检查