RouteOnContent
描述:
通过正则表达式匹配输入数据流的内容,然后将输入数据流的副本路由到正则表达式相匹配的输出数据流。 正则表达式作为用户自定义的属性添加,并以该属性名称为输出连线,其值为正则表达式所匹配数据流内容。 当用户定义的属性支持属性表达式语言时,其结果为字符串,而不是正则表达式。
标签:
route, content, regex, regular expression, regexp, 路由, 正则, 内容
参数:
如下列表中,必填参数则标识为加粗. 其他未加粗参数,则表示为可选参数。表中同时提到参数默认值设置.
名字 | 默认值 | 允许值列表 | 描述 |
---|---|---|---|
匹配要求 | 内容必须完全匹配 | 内容必须完全匹配内容包含匹配 | 指定文件的整个内容是否必须与正则表达式完全匹配,或者文件的指定部分(最多为内容缓冲区大小)是否可以包含正则表达式匹配的内容 |
字符编码 | UTF-8 | 数据流文件的字符集编码,默认为UTF-8 | |
内容缓存大小 | 1 MB | 指定用于匹配的数据流内容最大缓存值,超过此大小的数据流将被忽略 |
动态参数:
名字 | 值 | 描述 |
---|---|---|
Relationship Name | A Regular Expression | 与用户自定义正则表达式的属性值相匹配的内容路由到数据流输出,该输出数据流的名字由用户自定义属性的键所决定。 支持表达式语言 (支持流属性和变量) |
连线:
名字 | 描述 |
---|---|
unmatched | 与任何用户自定义表达式不匹配的内容将路由到此连线 |
动态连线:
根据用户设置可创建动态连线。
名字 | 描述 |
---|---|
Name from Dynamic Property | 与用户自定义表达式匹配的内容将路由到此动态连线 |
读取属性:
未提供。
写入属性:
未提供。
状态管理:
该组件不保存状态。
限制:
该组件没有限制
输入流要求:
组件必须提供输入流。
系统资源考量:
未提供。
* 遇到的问题:
1. 非空判断
body的内容值非空判断
Match Requirement
content must match exactly
Character Set
UTF-8
Content Buffer Size
1 MB
1.body为空
(.{0}|\d+)
2. 怎么判断一个JSON是否包含某个数据?
比如进行一次Http请求,请求返回的数据中有字符串 “success”:true 表名此次请求成功
.“success”:true.
这个正则表达式的意思是匹配包含
"success":true
这个字符串的文本。让我解释一下它是如何工作的:
.*
:这部分表示匹配任意数量(包括零个)的任意字符。.*
是一个常见的正则表达式模式,用于匹配任何文本中的任何内容。"success":true
:这部分是具体的文本,它会精确匹配"success":true
这个字符串。综合起来,整个正则表达式
.*"success":true.*
表示匹配任何文本中包含"success":true
这个字符串的部分,而且这个字符串前后可以有任意数量的其他字符。这个正则表达式通常用于从文本中提取包含成功信息的数据或信息。注意,正则表达式中的.
表示除换行符以外的任何字符,*
表示匹配前面的模式零次或多次。
3. 怎么判断内容是否包含某个数据?
上面的图中例子表示Processor根据输入FlowFile的内容进行路由,如果输入的FlowFile的内容为hello,那么它将会被路由到hello relationship的relationship中。
RouteOnContent处理器单元的功能近似于RouteOnAttribute:
RouteOnContent处理器单元进行路由判定的内容(FlowFile的内容)
RouteOnAttribute处理器单元进行路由判定的属性(FlowFile的属性)