RegEx用于从NiFi中的文件中提取文本

时间:2019-04-26 04:10:31

标签: java regex apache-nifi

我有如下的JSON响应,我只想使用NIFI中的extracttext处理器从文件中提取文本。但是,这并不是一个有效的Java表达式。

JSON响应

"17" : {
  "columnId" : 17,
  "columnName" : "id",
  "value" : "1234:;5678"
}

"17" : {
  "columnId" : 17,
  "columnName" : "id",
  "value" : "1234:;5678"
},
"19" : {
  "columnId" : 19,
  "columnName" : "HelloWorld",
  "value" : "Test 1:;34130"
},
"21" : {
  "columnId" : 21,
  "columnName" : "Testing",
  "value" : "Test"
}
"17" : {
  "columnId" : 17,
  "columnName" : "id",
  "value" : "1299:;6775"
},
"19" : {
  "columnId" : 19,
  "columnName" : "HelloWorld",
  "value" : "Test 2.:;34147"
},
"21" : {
  "columnId" : 21,
  "columnName" : "Testing",
  "value" : "Test"
}
"17" : {
  "columnId" : 17,
  "columnName" : "id",
  "value" : "1299:;6775"
},
"19" : {
  "columnId" : 19,
  "columnName" : "HelloWorld",
  "value" : "Test.:;34147"
},
"21" : {
  "columnId" : 21,
  "columnName" : "globalregions",
  "value" : "Test"
}

我尝试过表达:

"17" : {(.*?)\}. 

它不起作用。

预期结果应为:-

"17" : {
      "columnId" : 17,
      "columnName" : "id",
      "value" : "1234:;5678"
    }
"17" : {
      "columnId" : 17,
      "columnName" : "id",
      "value" : "1299:;6775"
    }

1 个答案:

答案 0 :(得分:1)

通常,您应该为json对象设置唯一的键。

并且在您的json中,同一对象中有多个键"17" ...

但是以下正则表达式应适用于您的json:"17"\s*:\s*\{[^}]*\}

您可以尝试:https://regex101.com/r/8RiPHu/1/