NiFi如何删除属性中多余的%字符以便正确执行urlDecode操作
解决方案
实现代码
在UpdateAttribute处理器中直接使用以下NiFi表达式即可完成需求:
${Name:replaceAll('%(?![0-9a-fA-F]{2})', ''):urlDecode()}
逻辑说明
- 第一步的
replaceAll函数通过正则匹配清除所有无效%符号:所用正则%(?![0-9a-fA-F]{2})为负向预查规则,仅匹配后面没有紧跟两位十六进制字符的%,不会修改正常的URL编码段(例如示例中的%c3%a1会被完整保留)。 - 针对你给出的示例值
name%c3%a1%s\<first>,%a1后面跟着s的冗余%会被匹配删除,处理后得到目标字符串name%c3%a1s\<first>,后续再调用urlDecode()就不会触发格式报错。 - 该规则完全适配
<前字符串长度可变的场景,所有不符合URL编码规范的冗余%都会被自动清理。
内容的提问来源于stack exchange,提问作者Ginger
相关产品推荐
相关产品推荐

