极奇策RPA技术教程:字符串过滤 (NodeStringFilter) - 自动化开发与配置详细指南

字符串过滤
📖 节点概述
多功能字符串列表过滤节点,支持对字符串列表或多行文本进行 20 余种筛选操作。可根据是否包含指定字符、开头/结尾特征、字符串长度、中英文数字特征、乱码检测甚至正则表达式进行过滤。输入既可以是文本列表,也可以是含换行符的多行字符串(自动按行拆分)。输出为过滤后的字符串列表。该节点为纯数据节点,无执行端口。
💡 使用场景:
- 日志清洗:从海量日志行中提取包含特定关键字(如 ERROR)的条目。
- 数据质量检测:筛选出包含乱码或非预期字符的行,标记异常数据。
- 多语言文本分离:将中文行、英文行、数字行分别提取到不同列表。
- 长度过滤:提取长度大于 N 的字符串(如长评论、长短信)。
- 正则匹配:通过自定义正则表达式提取符合复杂模式的文本行(如邮箱、手机号)。
- 排除干扰项:过滤掉包含特殊符号或指定字符的行,保留纯净数据。
🎮 实战连线指南:如何正确使用它?
节点有一个输入端口 数据源,一个动态出现的规则端口(名称根据规则类型变化)以及一个输出端口 过滤结果。通过“过滤规则”下拉框选择筛选方式,再根据提示填写规则或字数限制。
案例一:提取包含“错误”的日志行
- 获取日志数据:从【变量获取】节点读取
log_lines(字符串列表或多行文本)。 - 连接节点:将
log_lines连入【字符串过滤】的数据源。 - 选择规则:下拉框选择
提取包含字符->,此时会自动出现一个名为“规则”的多行文本输入框。 - 填写规则:在“规则”中输入
错误(每行一个关键词,支持多行)。 - 获取结果:
过滤结果输出包含“错误”的所有行组成的列表。 - 后续使用:对结果进行进一步处理或保存。
案例二:筛选长度大于 10 的字符串
- 选择规则:下拉框选择
提取个数大于->,出现“字数限制”输入框(整数)。 - 设置阈值:在“字数限制”中输入
10。 - 结果:只保留长度大于 10 的字符串。
案例三:正则提取手机号所在行
- 选择规则:下拉框选择
正则提取->,出现“规则”多行文本框。 - 填写正则:输入
/1[3-9]\d{9}/(使用/包裹表示正则表达式;若不使用/则按普通文本匹配)。 - 结果:包含手机号的行被保留。
⚙️ 引脚与参数说明
📥 输入引脚
| 引脚名称 | 数据类型 | 说明 |
|---|---|---|
| 数据源 | STRING / LIST | 待过滤的数据。可以是字符串列表,或者多行字符串(按换行拆分为行)。 |
| 规则 / 字数限制 | STRING / INT | 根据所选过滤规则动态出现:<br>• 字符类/正则规则:STRING 类型,多行文本框,每行一条匹配规则。<br>• 个数类规则:INT 类型,单行输入框,填写数字阈值。 |
⚙️ 控件参数
| 控件名称 | 类型 | 说明 |
|---|---|---|
| 数据源 | 多行文本框 | 手动输入原始文本(每行一条)。当连线传入数据时,连线值优先。 |
| 过滤规则 | 下拉选择 | 20+ 种筛选模式(详见下文)。 |
| 规则 / 字数限制 | 多行/单行文本框 | 动态出现,根据模式填写匹配规则或数字阈值。 |
📤 输出引脚
| 引脚名称 | 数据类型 | 说明 |
|---|---|---|
| 过滤结果 | LIST | 符合过滤条件的字符串列表(元素顺序与原数据相同)。 |
🔧 过滤规则详解
| 规则名称 | 说明 |
|---|---|
| 提取包含字符-> | 保留包含任一规则字符串的行(支持多行规则,任一匹配即保留)。 |
| 提取不包含字符-> | 保留不包含任何规则字符串的行。 |
| 提取开头包含字符-> | 保留开头匹配任一规则的行(规则从行首匹配)。 |
| 提取开头不包含字符-> | 保留开头不匹配任何规则的行。 |
| 提取尾部包含字符-> | 保留结尾匹配任一规则的行。 |
| 提取尾部不包含字符-> | 保留结尾不匹配任何规则的行。 |
| 提取个数大于-> | 保留字符串长度 > 阈值(字数限制)的行。 |
| 提取个数小于-> | 保留字符串长度 < 阈值的行。 |
| 提取个数等于-> | 保留字符串长度 == 阈值的行。 |
| 提取全部是中文的行-> | 保留仅包含中文字符的行(不含英文、数字、标点)。 |
| 提取包含中文的行-> | 保留至少包含一个中文字符的行。 |
| 提取不包含中文的行-> | 保留不包含任何中文字符的行。 |
| 提取全是英文行-> | 保留仅包含英文字母的行(大小写,不含数字空格等)。 |
| 提取包含英文行-> | 保留至少包含一个英文字母的行。 |
| 提取不包含英文的行-> | 保留不包含任何英文字母的行。 |
| 提取全是数字的行-> | 保留仅包含数字的行(0-9)。 |
| 提取包含数字的行-> | 保留至少包含一个数字的行。 |
| 提取不包含数字的行-> | 保留不包含任何数字的行。 |
| 提取包含乱码的行-> | 保留包含 ASCII 控制字符或 Unicode 替换字符(\ufffd)等乱码的行。 |
| 提取无乱码的行-> | 保留不包含乱码字符的行。 |
| 正则提取-> | 保留匹配任一正则表达式的行。规则支持/regex/ 格式(JavaScript 风格);若不以 / 包裹则按普通文本转义匹配。 |
⚠️ 注意事项
- 数据源拆分规则:如果输入是字符串,按
\n换行符拆分成行,并自动去掉首尾空白行。空行会被忽略。如果是列表,每个元素转为字符串处理。 - 多规则逻辑:所有“提取包含/不包含”类规则,当有多个规则时,采用“或”逻辑:只要匹配任意一条规则即视为满足(或不满足)。
- 正则表达式支持:使用
/pattern/格式,内部使用 Pythonre引擎。注意特殊字符转义。 - 乱码定义:包含以下字符视为乱码:ASCII 控制字符(0x00-0x08, 0x0B, 0x0C, 0x0E-0x1F, 0x7F)以及 Unicode 替换字符
\ufffd。 - 性能考虑:当数据源包含大量行(数万行)且规则较复杂时,可能有一定延迟。
- 输出始终为列表:即使输入是字符串,输出也是列表类型。若需要还原为文本,可配合【列表转文本】节点。
💎 小贴士:
- 正则规则可以灵活组合:例如
/^\d{3}/匹配以三位数字开头的行。- 多个过滤条件无法在一个节点内同时使用(如同时要求包含“A”且长度>5)。可通过串联多个【字符串过滤】节点实现复合过滤。
- 提取包含/不包含字符时,规则支持多行,每行独立匹配。例如规则输入
ERROR和WARNING,保留同时包含两者或任一的行(这里是“或”关系)。- 使用“提取全部是中文的行”可以快速分离中文字符串,用于自然语言处理预处理。
这篇文档对您有帮助吗?
您的反馈将帮助我们持续优化文档内容

