You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PostgreSQL中用regexp_replace仅替换括号内空格为逗号?

使用regexp_replace替换括号内空格为逗号的实现方案

核心思路

通过正则表达式的断言语法,精准定位括号()内部的空格,仅对这些空格执行替换操作,不影响括号外的内容。

不同数据库的实现代码

PostgreSQL

SELECT regexp_replace(
    'Describe what you (tried and) what (you expected) to happen',
    '(?<=\([^)]*) (?=[^)]*\))',
    ',',
    'g'
);
  • (?<=\([^)]*):正向肯定断言,确保当前空格的左侧是左括号(加上任意非右括号)的字符
  • :匹配需要替换的单个空格
  • (?=[^)]*\)):正向肯定断言,确保当前空格的右侧是任意非右括号)的字符加上右括号)
  • 'g':全局替换标志,替换所有符合条件的空格

MySQL 8.0+

SELECT REGEXP_REPLACE(
    'Describe what you (tried and) what (you expected) to happen',
    '(?<=\([^)]*) (?=[^)]*\))',
    ',',
    1,
    0
);
  • 前三个参数与PostgreSQL一致,1表示从字符串第1位开始匹配,0表示全局替换所有匹配项

Oracle 12c+

SELECT REGEXP_REPLACE(
    'Describe what you (tried and) what (you expected) to happen',
    '(?<=\([^)]*) (?=[^)]*\))',
    ',',
    1,
    0
) FROM DUAL;
  • Oracle 12c及以上版本支持正向断言,语法逻辑与上述一致

执行结果

输入字符串:

"Describe what you (tried and) what (you expected) to happen"

处理后输出:

"Describe what you (tried,and) what (you,expected) to happen"

内容的提问来源于stack exchange,提问作者niko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 23:30:48