替换括号内的逗号

Posted

技术标签:

【中文标题】替换括号内的逗号【英文标题】:replace comma within brackets 【发布时间】:2021-10-05 16:21:26 【问题描述】:

我有下面的文字,我试图单独。

[alpha ,beta, theta01, zeta01], [x9001, A2201, zeta01] 预期的输出是

[alpha beta theta01 zeta01], [x9001 A2201 zeta01] 我正在尝试使用正则表达式来完成此操作

WITH t AS (SELECT '[alpha, beta,theta01,zeta01], [x9001, A2201, zeta01]' col1 
             )
SELECT t.col1
     ,REGEXP_REPLACE(t.col1, "(\\[[A-Za-z0-9]*)*,", "\\1") new_col
  FROM t;

\[ -- 转义字符 [ \1 -- 转义组模式

但是,括号之间的逗号也被删除了。这是我得到的输出

[alpha beta theta01 zeta01] [x9001 A2201 zeta01]

任何指针将不胜感激。

【问题讨论】:

【参考方案1】:

考虑以下方法

select col1,
  ( select string_agg(regexp_replace(el, ',', ''), ', ')
    from unnest(regexp_extract_all(col1, r'\[.*?\]')) el
  ) new_col
from t      

如果应用于您问题中的样本数据 - 输出是

【讨论】:

很高兴它对你有用!也考虑投票赞成答案:o)

以上是关于替换括号内的逗号的主要内容,如果未能解决你的问题,请参考以下文章

替换花括号中的逗号

Java Regex - 拆分逗号分隔列表但排除方括号内的逗号

如何在.net正则表达式中找到不在括号内的逗号?

php替换大括号内的文字

用括号和逗号替换字符串中的逗号(如果它们不存在)

查找大括号内的文本并替换包括大括号的文本