如何编写正则表达式去除Debezium Connector主题名称的前缀?
Debezium主题重命名:提取表名核心部分
问题背景
表名格式为dbo.tRB_ODPP_TableName,需要将Debezium生成的主题名称仅保留TableName部分。初始使用的正则配置无法满足需求:
"transforms": "dropTopicPrefix", "transforms.dropTopicPrefix.type": "org.apache.kafka.connect.transforms.RegexRouter", "transforms.dropTopicPrefix.regex": "^[^.]+.(.*)", "transforms.dropTopicPrefix.replacement": "$1"
该正则仅能移除第一个.之前的内容(例如将my-server.dbo.tRB_ODPP_TableName转为dbo.tRB_ODPP_TableName),无法剥离dbo.tRB_ODPP_这部分前缀。
解决配置
替换正则表达式后即可实现需求,完整配置如下:
"transforms": "dropTopicPrefix", "transforms.dropTopicPrefix.type": "org.apache.kafka.connect.transforms.RegexRouter", "transforms.dropTopicPrefix.regex": "^([a-zA-Z]+.)+(.*)", "transforms.dropTopicPrefix.replacement": "$2"
正则解释
^([a-zA-Z]+.)+:匹配开头所有由字母组合加.构成的前缀段(支持多层前缀,如server.dbo.这类结构也能匹配)(.*):捕获需要保留的表名核心部分(即TableName)- 替换为
$2即可提取出目标表名
内容的提问来源于stack exchange,提问作者xxxradoxxx
相关产品推荐
相关产品推荐

