1

我有以下文字,我试图单独替换括号内的逗号。

[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] <----<>

任何指针将不胜感激。

4

1 回答 1

0

考虑以下方法

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

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

在此处输入图像描述

于 2021-10-05T20:50:37.077 回答