Я пытаюсь определить некоторые шаблоны для извлечения данных из Oracle, используя REGEXP_SUBSTR, но мне не хватает способа удалить разделители, используемые для поиска данных.
Мне нужен один шаблон для извлечения любого видаданные между двумя разделителями, но без учета этих разделителей в результате.
Давайте поделимся некоторыми примерами:
Строка:
Lorem ipsum dolor sit amet, consectetur, end adipiscing elit,-sed- сделать eiusmod tempor incididunt ut labore et dolore excp 123456 magna aliqua 789003.
Как мы можем использовать regexp_substr для получения таких данных, как?
1 - consectetur (without space and without comma)
2 - adipiscing (without words 'end', 'elit' and without space character)
3 - sed (without '-' character)
4 - labore (between space, using part of word in a sentence like lab*)
5 - 123456 (between 'excp ' and ' magna', without return space character)
6 - 789003 (without '.' dot character)
with example as
(select 'Lorem ipsum dolor sit amet, consectetur, end adipiscing elit, -
sed- do eiusmod tempor incididunt ut labore et dolore excp 123456 magna
aliqua 789003.' as string from dual)
select string,
regexp_substr(string,'(amet\, ).*(\, end)') as val1, --
Expect ==> 'consectetur'
regexp_substr(string,'(end ).+(elit)') as val2, --
Expect ==> 'adipiscing'
regexp_substr(string,'(-).*(-)') as val3, --
Expect ==> 'sed'
regexp_substr(string,'(ut ).*( et)') as val4, --
Expect ==> 'dolore'
regexp_substr(string,'excp +[[:digit:]]+( magna)') as val5, --
Expect ==> '123456'
regexp_substr(string,'(\S)+[[:digit:]]+(\.)') as val6 --
Expect ==> '789003'
from example;