正規表現は\
を使用しません -
を保護する ブラケット式 。 -
を入力するだけです 最初の文字として、開き角かっこの直後:
IF REGEXP_LIKE('--,,::', '[\-,:]*')
...
=> ORA-12728: invalid range in regular expression
興味があれば、 [\-,:]
に遭遇したとき Oracleの理解: " \
からの範囲内の任意の文字 、
へ または文字:
" 。これにより例外が発生する理由は、 \
です。 後のようです 、コード> ASCII値に応じて。また、Oracleは範囲を受け入れません。 終了値の後に開始値があります。
一方:
IF REGEXP_LIKE('--,,::', '[-,:]*')
期待どおりに機能します。
補足として、
[-,:] {0,1}
"-
の0回または1回の出現を意味します または、
または:
" [-,:]?
と書くことができます 。