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