2016-08-17 2 views
0

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

Antwort

0

[[abc]] ist kein verschachtelte Klammerausdruck. Es ist ein einfacher Klammerausdruck, der zu [, a, b, c gefolgt von einer einzelnen ] passt.

wikibooks

regular-expressions.info