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

时间:2016-08-17 04:40:36

标签: sql regex oracle oracle-sqldeveloper oracle12c

我正在学习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

返回'[]'。我认为括号中的表达总会返回一个字符。

有什么建议吗?

由于 格塔

1 个答案:

答案 0 :(得分:0)

[, a, b, c不是嵌套的括号表达式。它的简单括号表达式匹配]后跟单{(key_A, key_B):distance_value}

wikibooks

regular-expressions.info