Flink SQL中REGEXP_REPLACE是否支持捕获组?用法疑问求助
Flink SQL REGEXP_REPLACE 捕获组用法说明
Flink SQL的REGEXP_REPLACE函数支持捕获组,你的问题出在替换字符串中的捕获组引用未正确转义。
问题原因
在Flink SQL中,字符串里的$属于特殊字符(可能被SQL解析器识别为参数占位符),直接写$1会被当作普通字符串输出,无法触发捕获组的替换逻辑。
正确写法
要正确引用捕获组,需将替换字符串中的$转义为$$,捕获组引用应写成$$1:
select REGEXP_REPLACE('ERR1,ERR2', '([^,]+)', 'AA$$1AA');
执行该语句后会得到预期结果:AAERR1AA,AAERR2AA。
补充说明
- 捕获组编号从
1开始,$$0表示匹配到的整个字符串 - 如果需要在替换文本中使用普通的
$符号,同样需要写成$$
内容的提问来源于stack exchange,提问作者oceansize
相关产品推荐
相关产品推荐

