我正在尝试在regexp_substr()
中编写一个正则表达式。
例如,我有一个字符串DA.*BLK
,我想提取A
和B
之间的所有内容。我现在正在做的是使用
replace(replace(regexp_substr(target_column,'A.*B'),'A',''),'B','')`
然后我得到介于两者之间的任何东西。
但是我认为这种方式可能并不高效,而且不够优雅。我也尝试在其中使用
?=
,但看来Oracle不支持此类子句。有人可以让我知道实现目标的更好方法吗?非常感谢你!
最佳答案
使用提取组
REGEXP_SUBSTR('DASOMETHINGBLK','DA(.*)BLK', 1,1,NULL,1)
-- ^ ^ ^
--starting from first, find first 1st match bet'n ()
http://sqlfiddle.com/#!4/97eade/967