Skip to main content

ExtractText 提取匹配值

说明

通过提供动态参数配置,且设置为正则表达式,根据匹配情况决定数据流输出。

如果设置多个,则全部动态参数的正则匹配成功才会输出到matched输出连线,否则有任何一个不匹配,则输出到unmatched连线。

当输出到matched,动态参数以及匹配值被提取,并作为属性跟随连线一起输出。

示例说明

提取文本内容中的数字,并同时测试匹配与不匹配两种情况,所以提供两个数据输入:

  1. 包含数字的输入数据:abcd 123 456

  2. 纯字母的输入数据:abcd xyz

流程编排

流程说明

  • 测试数据由组件GenerateFlowFile生成,分别设置不同组件的"自定义文本"参数的内容,且分别与上面输入数据相同的字符串。

    注意:切记将该组件“调度”下的“运行安排”设置大些,否则将瞬间生成大量测试数据。

  • 提取数字内容的组件为ExtractText组件,并添加动态参数名“id”,值为数字的正则表达式“\d+

匹配输出

启动“包含数字内容”“提取数字内容”组件,将至少有一个数据流输出到matched连线,而unmatched连线则没有任何数据输出。并且匹配的输出数据流上有新属性id.0

这是由于组件ExtractText的参数“包含捕获组0”默认设置为“包含”

提取最后一个匹配值

但数据中还包含"456"数据,如果将参数“启用循环捕获组”修改为“启用”,但仍旧只包含最后一个数字:

提取多个匹配值

如果想要提取所有数字,则需要将动态参数值“\d+”加上组,即“(\d+)”,则最终将提取所有属性并加上索引:

剔除重复属性

从结果中可以看到,不带索引的“id”属性匹配第一个,第0个和第1个属性都匹配第一个数字,如果不想要重复的索引,则可通过选择参数“包含捕获组0”的设置为“不包含”

流程模板

参见附件(请右键另存保存):提取数字模板