【发布时间】:2021-03-17 16:44:34
【问题描述】:
如何使用jmespath 中的正则表达式在 json 中搜索数组?
考虑以下 JSON 文档(如果结构不佳,请放在一边):
{
"people_in_town": [
{"letter": "a"},
{"letter": "b"},
],
"people_with_shoes": [
{"letter": "c"},
{"letter": "d"},
],
"people_with_town": [
{"letter": "e"},
{"letter": "f"},
],
}
现在,jmespath 可以轻松地对列表的所有元素进行通配符,这样people_in_town[*].letter 将返回[a, b]。
但我想使用的通配符是数组名称的正则表达式,如下所示:
people_*_town.letter
这样它将返回people_in_town 和people_with_town 的内容,以及任何包含people_ 后跟<some string> 后跟_town 的数组。当然,上面的例子是行不通的。
如何使用 jmespath 将 json 文档中的数组与正则表达式匹配?
【问题讨论】:
-
你的用例是真的做
foo_*_bar(注意这是一个通配符而不是一个正则表达式,实际上)还是做foo_abc_bar OR foo_def_bar OR foo_ghi_bar?当第一个很可能不可能时,第二个肯定是。 -
这个问题是为第一个问题创建的,jmespath 文档中明显没有。为简单起见,我使用了通配符,但首选正则表达式。
-
JMESPath 中没有正则表达式这样的东西。虽然有一张票可以尝试安装:github.com/jmespath/jmespath.py/issues/213
标签: arrays json regex wildcard jmespath