1

我正在尝试使用 Apache NiFi 中的开箱即用处理器 ReplaceText 在 .dsv 文件中搜索,匹配所有日期时间格式并将它们转换为日期。但是,我不确定如何配置处理器本身。我试图将我的搜索值(搜索值属性)设置为如下所示:

(0{0,1}[1-9])|(1/d)|(2/d)|(3[0-1])/(0{0,1}[1-9])|(1[0-2])/([1-9]/d):(0{0,1}/d)|(1/d)|(2[0-4]):(0{0,1}/d)|([1-5]/d)

虽然我的替换值是匹配 ${time:format("yyyy-MM-dd'")} 的正则表达式1,但我还设置了另一个名为 time 的属性,该属性依次匹配 (0{0,1}[1-9])|(1/d)|(2/d)|(3[0-1])/(0{0,1}[1-9])|(1[0-2])/([1-9]/d):(0{0,1}/d)|(1/d)|(2[0-4]):(0{0,1}/d)|([1-5]/d)

这不起作用,我觉得我没有按应有的方式使用 ReplaceText。你能帮我吗?

编辑:

我应该包括我正在使用称为正则表达式替换和评估模式整个文本的替换策略。

4

1 回答 1

6

我相信在 Apache 邮件列表中回答了类似的问题,以供参考:

我创建了一个模板 [1],展示了如何进行您描述的日期转换的示例。它从 wiki [2] 上的主模板页面链接到并命名为“DateConversion.xml”

它首先使用 ExtractText 查找日期字符串并将其提取到名为“date”的属性中。使用的正则表达式是: (\d{2}-\d{2}-\d{4} \d{2}.\d{2}.\d{2})

然后它使用 ReplaceText 与上面相同的正则表达式的搜索值,用 ${date:toDate("dd-MM-yyyy HH.mm.ss"):format("yyyy-MM-dd HH:mm :ss+0000")}

[1] https://cwiki.apache.org/confluence/download/attachments/57904847/DateConversion.xml?version=2&modificationDate=1462288576652&api=v2

[2] https://cwiki.apache.org/confluence/display/NIFI/Example+Dataflow+Templates

于 2016-05-03T18:29:12.390 回答