我正在尝试利用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'")匹配的regex1}我还设置了另一个名为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。你能帮我吗?
编辑:
我应该包括我正在使用名为Regex Replace and Evaluation Mode整个文本的替换策略。
答案 0 :(得分: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(& #34; yyyy-MM-dd HH:mm:ss + 0000")}
[2] https://cwiki.apache.org/confluence/display/NIFI/Example+Dataflow+Templates