regex - 在 Redshift 中匹配连续数字 REGEXP_REPLACE

标签 regex amazon-redshift

我正在尝试从 Redshift 中的字符串中删除连续的数字。

来自 '16,16,16,3,3,4,16,16,' 我想获取 '16,3,4,16,' .

以下结构对我不起作用:

SELECT regexp_replace('16,16,16,3,3,4,16,16,', '(.+)\1{1,}', '\1');

它返回完全相同的字符串。 :(

谢谢!

最佳答案

这是使用 Redshift python UDF 的答案。

create or replace function dedupstring(InputStr varChar)
  returns varchar
stable
as $$
    OutputStr=''
    PrevStr=''
    first=True
    for part in InputStr.split(','):
        if part <> PrevStr:
            if first:
                OutputStr+=part
            else:
                OutputStr+=','+part
            PrevStr=part
            first=False
    return OutputStr
$$ language plpythonu;

Select dedupstring('16,16,16,3,3,4,16,16,');

这将返回“16,3,4,16,”

关于regex - 在 Redshift 中匹配连续数字 REGEXP_REPLACE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54084967/

相关文章:

c++ - 使用正则表达式从 C++ 中的一行文本中提取数据

javascript - 在 JSON 中存储电子邮件验证正则表达式字符串

sql - 为什么 Redshift 不需要物化 View 或索引?

java - Redshift 连接偶尔会掉线

amazon-web-services - 如何在 Redshift 中实现 Oracle 触发器类型的功能?

python - 如何在 pymongo 中否定正则表达式

php - 替换忽略 HTML 标签的文本

php/regex - 从文本中提取专有名词

mysql - 统计某个时间段内来自IP的 session 数

amazon-web-services - 如何在 Redshift 中创建自定义聚合 UDF 函数?