1

我有一个 JSON 文档,我正在查询一些数据。我需要遍历 ID 并找到任何包含字母的 ID。目前我有:

cat results.json | jq '.array|map(select( (.id|contains("a")) or (.id|contains("b")) ))' etc. etc.

我如何编写更有效的查询/正则表达式来在一个contains()函数中执行此操作,例如:

cat results.json | jq '.array|map(select( (.id|contains("a-z")) ))' etc. etc.

谢谢!

4

2 回答 2

3

要检查字符串是否包含字母表中的字母,您可以使用test("[A-Za-z]").

还要考虑字符类,例如

test("\\p{Alpha}")
test("\\p{L}")

为了安全起见,您可能还需要选择或检查字符串,例如使用以下形式:

select( .id | strings | test(...) )
于 2021-06-03T16:42:48.510 回答
0

鉴于此输入:

[
  10,
  false,
  "foo",
  12,
  true,
  "bar",
  ":)",
  "99",
  "a99"
]

以下 JQ 过滤器:

map(select(strings|test("\\p{alpha}")))

将产生以下输出:

[
  "foo",
  "bar",
  "a99"
]
于 2021-06-03T16:36:39.233 回答