本文介绍了如何在Oracle regexp_replace中通过正则表达式从逗号分隔的列表中删除重复项?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有
'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
but it doesn't remove all duplicates, it produces: VA - HRD 1, VA - HRD 1, VA - NOVA 1
请帮助...
推荐答案
([^,]+)(,[ ]*\1)+
尝试一下.这可行.请参见演示.
Try this.This works.See demo.
http://regex101.com/r/yG7zB9/8
问题是VA - HRD 1, VA - HRD 1
^ ^
这里的空格.您没有考虑到这一点,因为第一个匹配项后面没有空格.因此,请输入[ ]*
或\s*
使其接受.
The space here.You were not taking this into account as the first match has no space behid it.So inlcde [ ]*
or \s*
to make it accept.
这篇关于如何在Oracle regexp_replace中通过正则表达式从逗号分隔的列表中删除重复项?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!