如何使用oracle正则表达式排除除双引号和点(。)中包含的字符以外的所有字符?
例如
示例输入
"美国广播公司"" EFG"与" EFG"。" ABC"。" FIJ"
预期输出
"美国广播公司"" EFG" " EFG"" ABC"" FIJ"
答案 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:]]*"
格式提取表达式并将它们连接起来。
这并不完美,但是你对问题的说明不是太严格。