嵌套括号内表达式oracle正则表达式

问题描述:

朋友,嵌套括号内表达式oracle正则表达式

我正在学习oracle正则表达式。我正在使用Oracle 12c。 我知道包含一系列字符的括号表达式会返回输入字符串中第一个匹配的字符。因此,select regexp_substr('123 Oracle', '[abc]') from dual 返回字符'a'。 但是,如果括号表达式嵌套呢?

select regexp_substr('123 Oracle', '[[abc]]') from dual 

返回NULL表示不匹配。但为什么?

oracle如何解释这个正则表达式? 括号内为[],我认为括号里面的[]被视为文字。 因此,输出应该是要匹配的列表[ a b c ]中的第一个字符。 再次regexp_substr必须返回'a'。为什么返回NULL

在此的变化:

select regexp_substr('[]123 Oracle', '[[abc]]') from dual 

返回'[]'。而且我认为括号内的表达式总是会返回单个字符。

有什么建议吗?

由于 格塔

[[abc]]不是嵌套括号表达式。这是简单的括号表达式,匹配[, a, b, c后跟单个]

wikibooks

regular-expressions.info