🖥

#Jq コマンドで #JSON からの正規表現でのマッチをおこなう例

2019/04/20に公開

ref

https://stedolan.github.io/jq/manual/

文字列からのマッチ

マッチ情報がオブジェクトで返ってくる

$ echo '"Alice"' | jq 'match("A")'
{
  "offset": 0,
  "length": 1,
  "string": "A",
  "captures": []
}

マッチした文字を出力

$ echo '"Alice"' | jq 'match("A").string'
"A"
$ echo '"Alice"' | jq 'match("(A)")'
{
  "offset": 0,
  "length": 1,
  "string": "A",
  "captures": [
    {
      "offset": 0,
      "length": 1,
      "string": "A",
      "name": null
    }
  ]
}

キャプチャする

$ echo ‘“Alice”’ | jq ‘match(“(A)(l)(i)(c)(e)“)’
{
  “offset”: 0,
  “length”: 5,
  “string”: “Alice”,
  “captures”: [
    {
      “offset”: 0,
      “length”: 1,
      “string”: “A”,
      “name”: null
    },
    {
      “offset”: 1,
      “length”: 1,
      “string”: “l”,
      “name”: null
    },
    {
      “offset”: 2,
      “length”: 1,
      “string”: “i”,
      “name”: null
    },
    {
      “offset”: 3,
      “length”: 1,
      “string”: “c”,
      “name”: null
    },
    {
      “offset”: 4,
      “length”: 1,
      “string”: “e”,
      “name”: null
    }
  ]
}

キャプチャした文字列

$ echo ‘“Alice”’ | jq ‘match(“(A)(l)(i)(c)(e)“).captures[].string’
“A”
“l”
“i”
“c”
“e”

名前付きキャプテゃ

(特に意味のない例)

$ echo ‘“Alice”’ | jq ‘match(“(?<first_letter>A)(l)(i)(c)(e)“).captures[].name’
“first_letter”
null
null
null
null

Original by Github issue

https://github.com/YumaInaura/YumaInaura/issues/1338

チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ

Twitter

https://twitter.com/YumaInaura

公開日時

2019-04-20

Discussion