NiFi:需要从属性中删除一个字符,同时保留所有其他字符,但表达式有问题

NiFi: Need to remove a character from an attribute while leaving all others, but having trouble with the expression

我有一个包含 URL 编码字符的属性。我需要通过 URL 解码发送它,但由于某些原因,一些编码字符有一个额外的“%”符号。我添加了一个更新属性来尝试修复它,但我遇到了表达式问题。

Attribute: Name; value: name%c3%a1%s\<first> (NOTE: The length of the string before the "<" is variable.)

我需要将其更改为:name%c3%a1s\<first>,以便删除 a1 之后的 %。我在 "<" 之前看到过其他字母,所以我不确定如何删除多余的 "%" 但保留字母。当我 运行 ${Name:urlDecode()} 的属性值为 "name%c3%a1s\<first>" 时,它可以工作,但当值为 "name%c3%a1%s\<first>".

时会阻塞

你可以使用

${Name:replaceAll('%([a-zA-Z])\b', '')}

详情:

  • % - 一个 % 字符
  • ([a-zA-Z]) - 第 1 组:一个 ASCII 字母(您可以使用 \p{L} 来匹配任何字母)
  • \b - 单词边界。

替换为 ,对第 1 组值的反向引用。