Regex 用匹配模式替换字符串的查询

Regex 用匹配模式替换字符串的查询,regex,oracle,replace,Regex,Oracle,Replace,我有一根像下面这样的线 “comp”作为计算机,“ms”作为鼠标,“keybr”作为键盘,“MONT”作为显示器 是否可以编写一个查询,以便将结果作为 ‘comp’、‘ms’、‘keybr’、‘MONT’ 我可以使用replace query将字符串替换为空字符串。 但是如何删除双引号中的字符串 谁能帮我做这个? 提前谢谢 select replace( regexp_replace('''comp'' as "COMPUTER"'

我有一根像下面这样的线

“comp”作为计算机,“ms”作为鼠标,“keybr”作为键盘,“MONT”作为显示器

是否可以编写一个查询,以便将结果作为

‘comp’、‘ms’、‘keybr’、‘MONT’

我可以使用replace query将字符串替换为空字符串。 但是如何删除双引号中的字符串

谁能帮我做这个? 提前谢谢

select replace(
               regexp_replace('''comp'' as "COMPUTER"'
                              , '(".*")'
                              ,null)
               ,' as '
               ,null)
from dual
正则表达式“*”选择双引号中的文本

编辑:

正则表达式替换了匹配模式的整个长度。因此,我们可能需要首先使用逗号作为分隔符标记字符串,然后应用正则表达式。稍后加入它

编辑2:

A来自@EatAPeach

with x(y) as (
  select q'<'comp' as "COMPUTER",'ms' as "MOUSE" ,'keybr' as "KEYBOARD",'MONT' as "MONITOR",>'
  from dual
)
select y,
       regexp_replace(y, 'as ".*?"' ,null)
from x;

我试过这种方法-选择replace regexp_replace'comp as COMPUTER,ms as MOUSE,keybr as keybr as keybr,MONT as MONITOR,','.*',null,'as',null from dual我只得到这个:“comp”,你能帮我吗out@OracleUser,无需标记化和聚合。您可以在第一个查询中使用非贪婪量词。
with x(y) as (
  select q'<'comp' as "COMPUTER",'ms' as "MOUSE" ,'keybr' as "KEYBOARD",'MONT' as "MONITOR",>'
  from dual
)
select y,
       regexp_replace(y, 'as ".*?"' ,null)
from x;