为什么此正则表达式无法在我的Nifi工作流程中工作?

时间:2019-05-13 14:51:30

标签: regex apache-nifi

我想从Excel文件中提取一些文本(在ConvertToCsv和SplitText处理器之后)。 在拆分处理器之后,其中一些行是这样的:“Compétencesclés:capacence1,capeence2,competence3”以及逗号之间的列表。我只想获取列表,然后将其拆分。

我已经在Regex101上测试了这个简单的正则表达式:“Compétencesclés:(。*)”,它接受了这些术语之后的所有内容,因此它返回了列表。 但是,当我在NiFi中尝试该功能时,即使前面的步骤可以正常工作,我的流文件中也没有任何东西。

我在处理器的配置中做错了吗?我想念什么?

NiFi workflow

ExtractText properties window

2 个答案:

答案 0 :(得分:1)

首先,附加的工作流图像没有完整的流程,因此我不确定在ExtractText处理器之后会发生什么。

您还提到您没有从ExtractText处理器获得任何流入流文件的信息。因此,我假设您希望正则表达式的结果是一个新的流文件列表。 -答案是基于此;如果这不是您想要的东西,请告诉我。

  

ExtractText处理器:根据FlowFile的内容评估一个或多个正则表达式。这些正则表达式的结果将分配给FlowFile属性。属性名称映射到将要放置结果的属性名称。

根据描述,正则表达式的结果存储在流文件属性中;您的情况下的“ regex”和具有修改后属性的实际流文件将路由到下游处理器。

要将此属性值用作流文件,请使用ReplaceText处理器创建一个仅具有属性值作为内容的新流文件。

NiFi Flow

ReplaceText Processor

成功后,ReplaceText处理器会将更新后的流文件发送到下游处理器。

答案 1 :(得分:0)

我找到了问题的根源。显然这是一个编码问题,并且我的数据流中没有正确读取重音符号,这就是为什么“Compétencesclés”没有匹配的原因。但是,当尝试使用“ Comp.tences cl.s”时,它可以工作。对于以下内容,我确实使用了ReplaceText处理器来获取属性值。