2016-08-17 19 views
0

フレンド、入れ子式のオラクル正規表現

私はオラクル正規表現を学習しています。私はOracle 12cを使用しています。 一連の文字を含む括弧式は、入力文字列から最初に一致した文字を返すことを理解します。

したがって、select regexp_substr('123 Oracle', '[abc]') from dual は、シャッター'a'を返します。 ブラケット式がネストされている場合はどうなりますか?一致がないことを示す

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

戻るNULL。しかし、なぜ?

この正規表現はどのように解釈されますか? 外側の[]括弧内に、内部の[]括弧がリテラルとして扱われることが予想されます。 したがって、一致するリスト[ a b c ]のうち最初の文字が出力されます。 再度regexp_substr'a'を返す必要があります。代わりにNULLが返されるのはなぜですか?

この上のバリエーション:

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

戻り'[]'。そして、大括弧で囲まれた式は常に1つの文字を返すと考えました。

提案がありますか?

おかげ ジーサ

答えて

0

[[abc]]は、ネストされたブラケット表現ではありません。これは、[, a, b, cと一致する単純なブラケット式で、その後には]と表示されます。

wikibooks

regular-expressions.info