Der reguläre Ausdruck von Parado findet alles, was kein Komma ist, mehrmals gefolgt von einem Wagenrücklauf. Dies bedeutet, dass es bei einem Zeilenvorschub oder einem Komma im Text nicht funktioniert.
Oracle unterstützt mehrzeilige Ausdrücke mit m
Übereinstimmungsparameter
. Wenn Sie diesen Modus verwenden, $
stimmt mit dem Ende jeder Zeile sowie mit dem Ende der Zeichenfolge überein. Sie können dies verwenden, um den Ausdruck massiv zu vereinfachen:
regexp_substr(str, '.*$', 1, 1, 'm')
Das entspricht dem ersten Vorkommen (der ersten Zeile) der Zeichenfolge, die mit irgendetwas übereinstimmt, gefolgt vom Ende der Zeichenfolge, beginnend mit dem ersten Zeichen.
Als Beispiel:
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