首页 > 解决方案 > Kafka 转换忽略正则表达式

问题描述

我正在尝试使用 kafka transforms.RemoveString在将主题名称传递给我的连接器之前对其进行修改。我的主题名称看起来像这样

foo.bar_1.baz

我想提取bar_1并将其作为主题名称传递。据我所知,我的正则表达式是正确的,但 kafka 转换似乎不喜欢它 -

transforms=ReplaceField,RenameField,RemoveString
transforms.RemoveString.type=org.apache.kafka.connect.transforms.RegexRouter
transforms.RemoveString.regex=(\w*.)(\w*\d+)(.*)
transforms.RemoveString.replacement=$2

我可以告诉 RemoveString 正在被使用,因为当我将正则表达式更改为以下时,我得到了我想要的结果,但这对我的用例来说相当限制 -

transforms.RemoveString.regex=(foo.)(.*)(.baz)
transforms.RemoveString.replacement=$2

Kafka 转换中的正则表达式使用是否有某种限制?

标签: regexapache-kafkaapache-kafka-connect

解决方案


发现问题,必须转义反斜杠,使用我改进的正则表达式,现在看起来像这样 -

(\\w*)\\.(\\w+)\\.(.*)

推荐阅读