Bonjour,

Est-il possible de rendre optionnel une chaine de caractère ?
Je n'ai pas trouvé comment même en m'inspirant de
http://www.psoug.org/reference/regexp.html


Soit les chaines suivantes
TO8 LT34
45(TO8_LT34)
(TO8-LT34)
TO8LT34-C
45(TO8LT34)-I
(TO8_LT34)-S
TO8-LT34(25)
45(TO8LT34)(25)-S
(TO8 LT34)(25)-I

je veux récuperer les deux valeurs 8 et 34 qui peuvent etre toutes deux une chaine digit de longueur variable.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Select REGEXP_REPLACE (monchamp,'^[[:digit:]]*[(]?TO([[:digit:]]+)[_- ]?LT([[:digit:]]+[)]?)[(]?[[:digit:]]*[)]?[-C]?[-I]?[-S]?$','\2-\3') from matable;
ne marche pas car [-C]?[-I]?[-S]? n'est pas bon, en fait il me faudrait qqchose comme ça mais oracle n'aime pas

[(-C)|(-I)|(-S)]?
en utilisant le ? pour facultatif et le | pour soit chaine A soit chaine B soit chaine C soit aucune. Est-ce possible ?

Enfin, Je suis preneur de toute optimisation pour mon expression ...

Merci