我正在尝试使用kafka转换。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转换中正则表达式的使用是否有某种限制?
发现问题,反斜杠必须转义,使用我改进的正则表达式,它现在看起来像这样-
(\w*)\.(\w+)\.(.*)
您在RegexRouter中有错字,您错过了R
transforms=ReplaceField,RenameField,RemoveString
transforms.RemoveString.type=org.apache.kafka.connect.transforms.RegexRouter
transforms.RemoveString.regex=(w*.)(w*d+)(.*)
transforms.RemoveString.replacement=$2