ExtractText 提取匹配值
说明
通过提供动态参数配置,且设置为正则表达式,根据匹配情况决定数据流输出。
如果设置多个,则全部动态参数的正则匹配成功才会输出到matched
输出连线,否则有任何一个不匹配,则输出到unmatched
连线。
当输出到matched
,动态参数以及匹配值被提取,并作为属性跟随连线一起输出。
示例说明
提取文本内容中的数字,并同时测试匹配与不匹配两种情况,所以提供两个数据输入:
包含数字的输入数据:
abcd 123 456
纯字母的输入数据:
abcd xyz
流程编排
流程说明
测试数据由组件
GenerateFlowFile
生成,分别设置不同组件的"自定义文本"参数的内容,且分别与上面输入数据相同的字符串。注意:切记将该组件“调度”下的“运行安排”设置大些,否则将瞬间生成大量测试数据。
- 提取数字内容的组件为
ExtractText
组件,并添加动态参数名“id
”,值为数字的正则表达式“\d+
”
匹配输出
启动“包含数字内容”和“提取数字内容”组件,将至少有一个数据流输出到matched
连线,而unmatched
连线则没有任何数据输出。并且匹配的输出数据流上有新属性id.0
这是由于组件ExtractText
的参数“包含捕获组0”默认设置为“包含”。
提取最后一个匹配值
但数据中还包含"456
"数据,如果将参数“启用循环捕获组”修改为“启用”,但仍旧只包含最后一个数字:
提取多个匹配值
如果想要提取所有数字,则需要将动态参数值“\d+
”加上组,即“(\d+)
”,则最终将提取所有属性并加上索引:
剔除重复属性
从结果中可以看到,不带索引的“id
”属性匹配第一个,第0个和第1个属性都匹配第一个数字,如果不想要重复的索引,则可通过选择参数“包含捕获组0”的设置为“不包含”:
流程模板
参见附件(请右键另存保存):提取数字模板