A expressão regular do Parado corresponde a tudo o que não é uma vírgula várias vezes seguida por um retorno de carro. Isso significa que não funcionará para um avanço de linha ou se houver uma vírgula no texto.
O Oracle suporta expressões de várias linhas usando o
m
parâmetro de correspondência
. Ao usar este modo, $
corresponde ao final de cada linha, bem como ao final da string. Você pode usar isso para simplificar a expressão massivamente para:regexp_substr(str, '.*$', 1, 1, 'm')
Isso corresponde à primeira ocorrência (a primeira linha) da string que corresponde a qualquer coisa, seguida pelo final da string, contando a partir do primeiro caractere.
Como um exemplo:
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