【发布时间】:2018-07-09 05:21:26
【问题描述】:
我正在尝试在regexp_substr() 中编写正则表达式。
例如,我有一个字符串DA.*BLK,我想提取A 和B 之间的任何内容。我现在做的是使用
replace(replace(regexp_substr(target_column,'A.*B'),'A',''),'B','')`
然后我得到介于两者之间的任何东西。
但我认为这种方式可能效率不高,也不优雅。我也尝试在那里使用?=,但似乎Oracle 不支持这样的子句。
任何人都可以让我知道一种更好的方法来实现我的目的吗?非常感谢!
【问题讨论】:
-
你为什么不用
regexp_replace() -
可能重复:stackoverflow.com/q/7758859/2422776。不投票以重复关闭,所以我不会误击。
-
你能给我举个例子吗?
-
你需要像
'AAA123BBB'这样的字符串得到什么结果? -
@APC 很好,谢谢!我想如果我有这种问题,我会在 A 或 B 的数量方面更具体。例如,如果我需要
123,我会使用REGEXP_SUBSTR(AAA123BBB','AAA(.*)BBB', 1,1,NULL,1),或者我可以使用更多的相邻字符来指定边界。但如果您有更好的解决方案,请告诉我。