【问题标题】:Select JSON values with special characters选择带有特殊字符的 JSON 值
【发布时间】:2018-12-31 19:32:06
【问题描述】:

我希望检测我的 JSON 值中的异常情况。 下面是一个通过 jq 查询数据的例子

"2014-03-26 01:58:00"
"9019549360"
"109092812_20150626"
"134670164"
""
"97695498"
"680561513"

我想显示所有包含-_blank 的值。

换句话说,我想显示以下输出

"2014-03-26 01:58:00"
"109092812_20150626"
""

现在,我尝试了以下方法:

select (. | contains("-","_"," "))'

这似乎可行,但为了使其更健壮,我想将其扩展为包括所有特殊字符。

【问题讨论】:

  • 您可以使用regular expression 过滤器来查找感兴趣的值...
  • 请定义所有特殊字符,您指的不是字母或数字吗?
  • 没错。除了 A-Z、a-z、0-9 之外的所有内容。谢谢

标签: json string select jq any


【解决方案1】:

您的查询不会检测到空字符串,并且可能会多次发出相同的字符串。使用test会更方便,例如:

select( length==0 or test("[-_ ]") )

还要注意初步的'.'在您的查询中是不必要的。

附录

从其中一个 cmets 中,您似乎需要指定“[^a-zA-Z0-9]”或类似的参数作为 test 的参数。

【讨论】:

    猜你喜欢
    • 2022-10-19
    • 2016-08-05
    • 1970-01-01
    • 1970-01-01
    • 2022-05-25
    • 2011-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多