Oracle正则表达式用于特定字符串之前的所有字符

时间:2017-04-05 08:40:20

标签: sql regex oracle

我正在处理子字符串正则表达式,我需要从这样的字符串中获取所有字符:

FIRSTCOLUMN,SECONDCOLUMN,THIRDCOLUMN

到目前为止,我已经:

SELECT 
    REGEXP_SUBSTR('FIRSTCOLUMN, SECONDCOLUMN, THIRDCOLUMN', '[^SECONDCOLUMN]+') AS SUBSTRING 
FROM DUAL;

这只返回" FIR"但我需要的结果是" FIRSTCOLUMN,"。

另一个更好地理解问题的例子是: 如果我的第一个例子是'[^THIRDCOLUMN]+'模式而不是'[^SECONDCOLUMN]+',我希望结果为" FIRSTCOLUMN,SECONDCOLUMN,"。

我知道这是可能的,但我对正则表达式不够好。

1 个答案:

答案 0 :(得分:2)

你得到的基本正则表达式概念是错误的。 [^...]取消了该类中的所有字符,因此它会查找不是S,而不是E,而不是C的字符等正确停止的字符在FIR S T(见S) 你可能想要的是一个懒惰的量词:

^.*?SECONDCOLUMN

^.*?THIRDCOLUMN

分别