ExtractText Processor
类型全限定名:cn.org.acal.lynxus.processors.standard.ExtractText
所属 Bundle:cn.org.acal.lynxus:lynxus-standard-nar:2.11.8
描述
对 FlowFile 的内容计算一个或多个正则表达式。
标签
evaluateextractTextRegular Expressionregex
属性
下表中,加粗的属性为必填项;其余为可选项。表格同时标注默认值、是否支持表达式语言,以及是否为敏感属性(值会被加密)。
| 名称 | 默认值 | 可选值 | 描述 |
| Character Set | UTF-8 | | 文件编码所用的字符集 |
| Maximum Buffer Size | 1 MB | | 指定为应用正则表达式而缓冲的最大数据量(每个 FlowFile)。大于指定最大值的 FlowFile 将不会被完全评估。 |
| Maximum Capture Group Length | 1024 | | 指定给定捕获组值可以具有的最大字符数。 任何超出最大字符数的字符都将被截断。 |
| Enable Canonical Equivalence | false | | 指示两个字符仅当其完整规范分解匹配时才匹配。 |
| Enable Case-insensitive Matching | false | | 指示两个字符即使大小写不同也匹配。也可以通过嵌入标志 (?i) 指定。 |
| Permit Whitespace and Comments in Pattern | false | | 在此模式下,空白被忽略,以 # 开头的嵌入注释将被忽略直到行尾。也可以通过嵌入标志 (?x) 指定。 |
| Enable DOTALL Mode | false | | 指示表达式 '.' 应匹配任何字符,包括行终止符。也可以通过嵌入标志 (?s) 指定。 |
| Enable Literal Parsing of the Pattern | false | | 指示不应赋予元字符和转义字符特殊含义。 |
| Enable Multiline Mode | false | | 指示 '^' 和 '$' 应在行终止符之前和之后以及序列结尾处匹配,而不是仅匹配整个输入的开头或结尾。也可以通过嵌入标志 (?m) 指定。 |
| Enable Unicode-aware Case Folding | false | | 当与'启用不区分大小写匹配'一起使用时,以符合 Unicode 标准的方式进行匹配。也可以通过嵌入标志 (?u) 指定。 |
| Enable Unicode Predefined Character Classes | false | | 指定符合 Unicode 技术标准 #18:Unicode 正则表达式附录 C:兼容性属性。也可以通过嵌入标志 (?U) 指定。 |
| Enable Unix Lines Mode | false | | 指示在 '.', '^' 和 '$' 的行为中仅识别 '\n' 行终止符。也可以通过嵌入标志 (?d) 指定。 |
| Include Capture Group 0 | true | | 指示捕获组 0 应作为属性包含在内。捕获组 0 代表整个正则表达式匹配,通常不使用,并且可能具有相当大的长度。 |
| Enable Repeating Capture Group | false | | 如果设置为 true,将提取匹配捕获组的每个字符串。否则,如果正则表达式匹配多次,则仅提取第一个匹配项。 |
| Enable Named Groups | false | | 如果设置为 true,当正则表达式中存在命名组时,将使用组名称作为属性名称,而不是组索引。所有捕获组都必须命名,如果组数(不包括捕获组 0)与命名组数不相等,则验证将失败。 |
动态属性
动态属性允许用户自定义属性的名称与值。
| 名称 | 值 | 描述 |
| 一个 FlowFile 属性 | 带有一个或多个捕获组的正则表达式 | 第一个捕获组(如果找到)将被放置到该属性名中。但所有捕获组,包括匹配的字符串序列本身,也将通过提供的索引值在该属性名处提供。 |
关系 (Relationships)
| 名称 | 描述 | 自动终止 |
matched | 当成功评估正则表达式并因此修改 FlowFile 时,FlowFiles 将路由到此关系 | 否 |
unmatched | 当没有提供的正则表达式与 FlowFile 的内容匹配时,FlowFiles 将路由到此关系 | 否 |
详细说明
ExtractText
使用说明
Extract Text Processor 会根据是否启用命名捕获组(named capture groups)产生不同的结果。
示例
下面用一个对照示例来说明这一点。
数据
`foo\r\nbar1\r\nbar2\r\nbar3\r\nhello\r\nworld\r\n`
不使用命名捕获组
配置
| 属性名 |
属性值 |
| regex.result1 |
(?s)(.*) |
| regex.result2 |
(?s).*(bar1).* |
| regex.result3 |
(?s).*?(bar\\d).* |
| regex.result4 |
(?s).*?(?:bar\\d).*?(bar\\d).*?(bar3).* |
| regex.result5 |
(?s).*(bar\\d).* |
| regex.result6 |
(?s)^(.*)$ |
| regex.result7 |
(?s)(XXX) |
结果
| Attribute 名 |
Attribute 值 |
| regex.result1 |
foo\r\nbar1\r\nbar2\r\nbar3\r\nhello\r\nworld\r\n |
| regex.result2 |
bar1 |
| regex.result3 |
bar1 |
| regex.result4 |
bar2 |
| regex.result4.0 |
foo\r\nbar1\r\nbar2\r\nbar3\r\nhello\r\nworld\r\n |
| regex.result4.1 |
bar2 |
| regex.result4.2 |
bar3 |
| regex.result5 |
bar3 |
| regex.result6 |
foo\r\nbar1\r\nbar2\r\nbar3\r\nhello\r\nworld\r\n |
| regex.result7 |
|
使用命名捕获组
配置
| 属性名 |
属性值 |
| Enable named group support |
True |
| regex.result1 |
(?s)(?.* |
| regex.result2 |
(?s).*(?bar1).* |
| regex.result3 |
(?s).*?(?bar\d).* |
| regex.result4 |
(?s).*?(?:bar\d).*?(?bar\d).*?(?bar3).* |
| regex.result5 |
(?s).*(?bar\d).* |
| regex.result6 |
(?s)^(?.*)$ |
| regex.result7 |
(?s)(?XXX) |
结果
| Attribute 名 |
Attribute 值 |
| regex.result1 |
foo\r\nbar1\r\nbar2\r\nbar3\r\nhello\r\nworld\r\n |
| regex.result2.BAR1 |
bar1 |
| regex.result3.BAR1 |
bar1 |
| regex.result4.BAR2 |
bar2 |
| regex.result4.BAR2 |
bar2 |
| regex.result4.BAR3 |
bar3 |
| regex.result5.BAR3 |
bar3 |
| regex.result6.ALL |
foo\r\nbar1\r\nbar2\r\nbar3\r\nhello\r\nworld\r\n |
| regex.result7.MISS |
|