L'expression régulière de Parado correspond à tout ce qui n'est pas une virgule plusieurs fois suivi d'un retour chariot. Cela signifie que cela ne fonctionnera pas pour un saut de ligne ou s'il y a une virgule dans le texte.
Oracle prend en charge les expressions multilignes en utilisant le m
paramètre de correspondance
. Lorsque vous utilisez ce mode, $
correspond à la fin de chaque ligne ainsi qu'à la fin de la chaîne. Vous pouvez l'utiliser pour simplifier massivement l'expression pour :
regexp_substr(str, '.*$', 1, 1, 'm')
Cela correspond à la première occurrence (la première ligne) de la chaîne qui correspond à n'importe quoi, suivie de la fin de la chaîne, à compter du premier caractère.
Par exemple :
with strings as (
select 'hi
hi again' as str
from dual
union all
select 'bye
and again'
from dual
)
select regexp_substr(str, '.*$', 1, 1, 'm')
from strings