使用 regexp_substr 选择逗号之间的单词(不包括双引号)

2024-04-11

我试图从逗号分隔列表中返回字符串列表。但是,我仍然想返回字符串中出现在双引号之间的逗号。

这是我目前的声明:

SELECT 
  regexp_substr('one,two,"three, four five",six,"seven, eight, nine"', 
                '(.*?,){'||(n-1)||'}([^,]*)', 1, 1, '', 2) token
FROM (SELECT LEVEL n FROM dual CONNECT BY LEVEL <= 10);

这将返回:

one
two
"three
four five"
six
"seven
eight
nine"

但是我需要返回:

one
two
three, four, five
six
seven, eight, nine

我的正则表达式生锈了。有没有一种干净的方法来修改我的正则表达式来实现此目的?

Thanks!


尝试这个:

'^("[^"]*",|[^",]*,){'||(n-1)||'}("[^"]*"|[^",]*)', 1, 1, '', 2

或更简单的版本:

'(^|,)("[^"]*"|[^",]*)', 1, n, '', 2

或者如果不需要引号 - 将其包装到:

regexp_replace( ..., '"', '')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 regexp_substr 选择逗号之间的单词(不包括双引号) 的相关文章

随机推荐