我正在处理子字符串正则表达式,我需要从这样的字符串中获取所有字符:
FIRSTCOLUMN,SECONDCOLUMN,THIRDCOLUMN
到目前为止,我已经:
SELECT
REGEXP_SUBSTR('FIRSTCOLUMN, SECONDCOLUMN, THIRDCOLUMN', '[^SECONDCOLUMN]+') AS SUBSTRING
FROM DUAL;
这只返回" FIR"但我需要的结果是" FIRSTCOLUMN,"。
另一个更好地理解问题的例子是:
如果我的第一个例子是'[^THIRDCOLUMN]+'
模式而不是'[^SECONDCOLUMN]+'
,我希望结果为" FIRSTCOLUMN,SECONDCOLUMN,"。
我知道这是可能的,但我对正则表达式不够好。
答案 0 :(得分:2)
你得到的基本正则表达式概念是错误的。 [^...]
取消了该类中的所有字符,因此它会查找不是S
,而不是E
,而不是C
的字符等正确停止的字符在FIR S T(见S
)
你可能想要的是一个懒惰的量词:
^.*?SECONDCOLUMN
或
^.*?THIRDCOLUMN
分别