本文介绍了如何在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中通过正则表达式从逗号分隔的列表中删除重复项?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-23 01:09