2016-08-17 184 views
0

朋友,嵌套括號內表達式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 

返回'[]'。而且我認爲括號內的表達式總是會返回單個字符。

有什麼建議嗎?

由於 格塔

回答