如何利用JQ的test正则操作实现反向匹配筛选?
在jq中实现正则反向筛选
很简单!要选出不匹配指定正则模式的JSON数据项,只需要在test()的结果前加上取反运算符not,就能反转筛选逻辑。
完整示例演示
你的原始数据
[ {"genre": "progressive"}, {"genre": "a progressive 1"} ]
反向筛选的jq查询
map(select(.genre | test("^progressive$") | not))
最终输出结果
[ { "genre": "a progressive 1" } ]
额外写法参考
你也可以用括号把test()表达式包裹后再取反,逻辑完全一致,只是写法更清晰:
map(select( .genre | (test("^progressive$") | not) ))
核心逻辑就是对test()返回的布尔值(匹配时为true,不匹配时为false)取反,让select选中原本被排除的条目。
内容的提问来源于stack exchange,提问作者Nam Nguyen
相关产品推荐
相关产品推荐

