Oracle正则表达式删除除Quotes和Dot之外的所有字符

时间:2015-12-09 11:43:56

标签: regex oracle

如何使用oracle正则表达式排除除双引号和点(。)中包含的字符以外的所有字符?

例如

示例输入

  

"美国广播公司"" EFG"与" EFG"。" ABC"。" FIJ"

预期输出

  

"美国广播公司"" EFG" " EFG"" ABC"" FIJ"

1 个答案:

答案 0 :(得分:0)

这是我的尝试:

WITH A AS
  (SELECT 'and "EFG"."ABC"."FIG" is not the same as "Abc"."EFG" bla' AS text FROM DUAL),
b as (
SELECT 
    text, 
    REGEXP_SUBSTR(text, '("[[:alnum:]]*"\.)+"[[:alnum:]]*"',1,level) part, 
    level l
  FROM a
  connect by 
    REGEXP_SUBSTR(text, '("[[:alnum:]]*"\.)+"[[:alnum:]]*"',1,level) is not null
  )
select listagg(b.part,' ') within group (order by l)
from b;   

它以("[[:alnum:]]*"\.)+"[[:alnum:]]*"格式提取表达式并将它们连接起来。

这并不完美,但是你对问题的说明不是太严格。