我需要通过oracles regexp_substr
方法提取子字符串。
到目前为止,我使用
select regexp_substr('TD_SCHEMANEU_576','[^TD_]+[a-zA-Z]') from dual
;
工作正常,因为它返回了' TD _'之间的预期子字符串。 &安培;&安培; ' _576':
SCHEMANEU
但是如果源字符串不包含字符串' TD _'
正则表达式返回任何字符串而不是null
以下内容返回abc
而不是null
select regexp_substr('abc_def_ghi1024','[^TD_]+[a-zA-Z]') from dual
;
答案 0 :(得分:0)
[^TD_]
表示“任何字符,T
,D
或_
除外。
您可能希望使用REGEX_REPLACE
并捕获群组:
REGEX_REPLACE('TD_SCHEMANEU_576',
'TD_([a-zA-Z]+)',
'\1')
\1
是一个反向引用,指向第一个捕获组中的内容,即正则表达式中的第一组括号。