regex - 如何通过 Oracle regexp_replace 中的正则表达式从逗号分隔列表中删除重复项?

标签 regex oracle

这个问题在这里已经有了答案:





How to remove duplicates from comma separated list by regex in Oracle but I don't want duplicates values? [duplicate]

(2 个回答)



How to remove duplicates from space separated list by Oracle regexp_replace? [duplicate]

(3 个回答)


3年前关闭。




我有

'VA - HRD 1, VA - HRD 1, VA - NOVA 1, VA - NOVA 1'

并且想要得到
'VA - HRD 1, VA - NOVA 1'

我在尝试
regexp_replace( 'VA - HRD 1, VA - HRD 1, VA - NOVA 1, VA - NOVA 1' ,'([^,]+)(,\1)+', '\1')

但它不会删除所有重复项,它会产生:VA - HRD 1, VA - HRD 1, VA - NOVA 1
请帮忙...

最佳答案

([^,]+)(,[ ]*\1)+

试试这个。这有效。见演示。

http://regex101.com/r/yG7zB9/8

问题是 VA - HRD 1, VA - HRD 1
                     ^  ^

这里的空间。你没有考虑到这一点,因为第一场比赛没有空间隐藏它。所以 inlcde [ ]*\s*使其接受。

关于regex - 如何通过 Oracle regexp_replace 中的正则表达式从逗号分隔列表中删除重复项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26672269/

相关文章:

r - 如何用小写字母替换最后一个点后的某些字符

java - 批量更新 Oracle 中的表

sql - 使用左连接从两个表中选择最小值

java - Oracle:Java 存储过程发送 JMS 消息

带破折号的正则表达式电话号码

python - 优化Python字节数组转义性能

javascript - 如何使用正则表达式在原始文件中匹配和查找两个字符串之间的整个字符串?

javascript - 以空格开头的字符串的正则表达式

sql - 你能锁定一个Oracle序列吗?

oracle - 将表索引从唯一修改为非唯一