フレンド、入れ子式のオラクル正規表現
私はオラクル正規表現を学習しています。私は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つの文字を返すと考えました。
提案がありますか?
おかげ ジーサ