首页 > 解决方案 > 正则表达式提取 json NiFi 中的字段

问题描述

初学者正则表达式问题。我的 NiFi ExtractText 中有一个 JSON,我想提取 2 个字段。我将如何使用正则表达式来做到这一点?

[
  {
    "id": "12erf3-312331-233"
  },
  [
    {
      "id": "1234",
      "id2": "1234",
      "id3": "1234"
    },
    {
      "id": "1234",
      "id2": "1234",
      "id3": "1234"
    },
    {
      "id": "1234",
      "id2": "1234",
      "id3": "1234"
    },
    {
      "id": "1234",
      "id2": "1234",
      "id3": "5555"
    }
  ]
]
  1. 获取第一个 id:“12erf3-312331-233”(这是一个 uuid)
  2. 获取所有第二个数组: [ { "id": "1234" ... "id3": "5555" } ]

标签: jsonregexapache-nifi

解决方案


为了实现您的需要,您可以使用 ReplaceText 处理器。看看下面的配置。搜索值将是(?s).*("id": )(".*").*}.*(\[.*\]).*\]和替换值:{$1$2,data:$3}。注意选择评估模式为“整个文本”。要轻松检查正则表达式,您可以使用我使用过的链接:https ://regex101.com/r/p6T2Vw/1

在此处输入图像描述


推荐阅读