嗨,我有一个如下的文本文件
[2019-05-13 00:00:01] local.INFO: home.index
{"phone":"959452735778","ua":"MMDataMall/11002 CFNetwork/976
Darwin/18.2.0"}
现在我需要如下提取数据
2019-05-13 00:00:01,959452735778,MMDataMall/11002 CFNetwork/976
Darwin/18.2.0
我正在使用文本replacetext处理器,但是我得到的是空文档
我的搜索值:-(.+?)\s+:local INFO.*phone\s+(\[.*\])\s+(?=,).*ua\s+(\[.*\])\s+(?=,)$
我的替换值:-$1 ,$2,$3
有人可以帮我吗
答案 0 :(得分:2)
使用以下正则表达式:
\[(.*)\][\s\S]*\{\S+?:"(\d+)\S+:"([\s\S]*)"}
然后替换为
$1,$2,$3
[
和]
之间的文本。:"
组合,然后捕获电话号码。:"
组合,然后捕获所有内容,直到结束"
。答案 1 :(得分:1)
此表达式捕获三个组,您可以用逗号将其绑定,并可能返回所需的输出:
\[(.*)\][\s\S]*?phone":"(.*)?","[a-z]+":"([\s\S]*?)"}
但是我不确定它是否可以在NIFI中使用。您也可以根据需要简单地添加或减少边界。
如果这不是您想要的表达式,则可以在regex101.com中修改/更改表达式。
您还可以在jex.im中可视化您的表达式:
const regex = /\[(.*)\][\s\S]*?phone":"(.*)?","[a-z]+":"([\s\S]*?)"}/gm;
const str = `[2019-05-13 00:00:01] local.INFO: home.index
{"phone":"959452735778","ua":"MMDataMall/11002 CFNetwork/976
Darwin/18.2.0"}`;
const subst = `$1,$2,$3`;
// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);
console.log('Substitution result: ', result);