没有用负面的预测否定案件'qwe'

时间:2015-01-30 09:33:43

标签: regex regex-lookarounds

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

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

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

1 个答案:

答案 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)]*进行前瞻性的万无一失的检查