Freunde,verschachtelte eingeklammerte Ausdruck Orakel regulären Ausdruck
Ich lerne Orakel regulären Ausdrücken. Ich benutze Oracle 12c. Ich verstehe, dass ein Klammerausdruck, der eine Reihe von Zeichen enthält, das erste übereinstimmende Zeichen aus der Eingabezeichenfolge zurückgibt.
Somit gibt select regexp_substr('123 Oracle', '[abc]') from dual
den Zeichen 'a'
zurück. Was aber, wenn Klammerausdrücke verschachtelt sind?
select regexp_substr('123 Oracle', '[[abc]]') from dual
gibt NULL
zurück, die keine Übereinstimmung anzeigt. Aber warum?
Wie interpretiert Orakel diesen regulären Ausdruck? Innerhalb der äußeren []
Klammern, erwarte ich, dass die inneren []
Klammern als Literale behandelt werden. So sollte die Ausgabe das erste Zeichen aus der Liste sein, die [ a b c ]
zugeordnet werden soll. Erneut muss regexp_substr
'a'
zurückgegeben werden. Warum wird NULL
zurückgegeben?
Eine Variante dazu:
select regexp_substr('[]123 Oracle', '[[abc]]') from dual
kehrt '[]'
. Und ich dachte, dass ein in Klammern gesetzter Ausdruck immer ein einzelnes Zeichen zurückgeben würde.
Irgendwelche Vorschläge?
Dank Geetha