Parados reguljära uttryck matchar allt som inte är ett komma flera gånger följt av en vagnretur. Det betyder att det inte fungerar för en radmatning eller om det finns ett kommatecken i texten.
Oracle stöder flerradsuttryck med m
matchningsparameter
. När du använder det här läget, $
matchar slutet av varje rad såväl som slutet av strängen. Du kan använda detta för att helt enkelt uttrycket massivt till:
regexp_substr(str, '.*$', 1, 1, 'm')
Det vill säga matcha den första förekomsten (den första raden) av strängen som matchar någonting, följt av slutet av strängen, räknat från det första tecknet.
Som ett exempel:
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