powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / regexp
15 сообщений из 15, страница 1 из 1
regexp
    #39361144
dimyaz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите пож-та составить запрос, а то своих знаний не хватает:
Нужно из текста вытащить все строки начинающиеся на XYZ.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
with t1 as(
  select '
  asdfasdfqwe wer sxcv zx XYZ.text1
  safdsadf wer 3245df adf a XYZ.text2
  tyrtey uk,vn r 673w XYZ.text3' txt
  from dual)
select regexp_substr(txt,'XYZ[^ ]*')
from t1;



Результат:
Код: plsql
1.
XYZ.text1



У меня получается найти только первое попадание, а как вытащить ВСЕ?

Код: plsql
1.
2.
3.
XYZ.text1
XYZ.text2
XYZ.text3
...
Рейтинг: 0 / 0
regexp
    #39361147
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimyaz,

like
...
Рейтинг: 0 / 0
regexp
    #39361151
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
with t1 as(
  select '
  asdfasdfqwe wer sxcv zx XYZ.text1
  safdsadf wer 3245df adf a XYZ.text2
  tyrtey uk,vn r 673w XYZXYZ.text3' txt
  from dual)
select regexp_substr(txt, 'XYZ\S*', 1, level)
from t1
connect by level <= regexp_count(txt, '(^|\s)XYZ');
...
Рейтинг: 0 / 0
regexp
    #39361153
dimyaz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AmKad,

Тут получится N строк. А нужно также одной строкой оставить.
В принципе можно потом в одну завернуть.
Но может есть вариант например через replace убрать все кроме, щас попробую
...
Рейтинг: 0 / 0
regexp
    #39361158
Maxim Demenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimyaz,

dimyaz,

Типа
Код: plsql
1.
regexp_replace(txt,'.*?(XYZ[^ ]*).*?*','\1')

?

Regards

Maxim
...
Рейтинг: 0 / 0
regexp
    #39361159
Maxim Demenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Demenko,

очепятка, sorry
Код: plsql
1.
regexp_replace(txt,'.*?(XYZ[^ ]*).*?','\1')
...
Рейтинг: 0 / 0
regexp
    #39361164
dimyaz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Demenko,

Да, да, спасибо!
...
Рейтинг: 0 / 0
regexp
    #39361167
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimyaz,

18735863
...
Рейтинг: 0 / 0
regexp
    #39361169
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim DemenkoMaxim Demenko,

очепятка, sorry
Код: plsql
1.
regexp_replace(txt,'.*?(XYZ[^ ]*).*?','\1')

Этот вариант выбирает строки, которые не начинаются, а содержат XYZ.
...
Рейтинг: 0 / 0
regexp
    #39361174
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKadMaxim DemenkoMaxim Demenko,

очепятка, sorry
Код: plsql
1.
regexp_replace(txt,'.*?(XYZ[^ ]*).*?','\1')

Этот вариант выбирает строки, которые не начинаются, а содержат XYZ.И не работает, если строка не заканчивается на слово XYZ[^ ].
...
Рейтинг: 0 / 0
regexp
    #39361187
Maxim Demenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshopAmKadпропущено...
Этот вариант выбирает строки, которые не начинаются, а содержат XYZ.И не работает, если строка не заканчивается на слово XYZ[^ ]. Согласен, если данные это позволяют, то приведенный по ссылке вариант (со склейкой с последним XYZ ) и последующим отсеканием получше будет, так что допилить можно будет.

Regards

Maxim
...
Рейтинг: 0 / 0
regexp
    #39361253
dimyaz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Demenko,

Не работает когда попадаются строки, у которых нет XYZ.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
with t1 as(
  select '
  asdfwqer
  vbsdfgt
  asdfasdfqwe wer sxcv zx XYZ.text1 
  wercv
  safdsadf wer 3245df adf a XYZ.text2 
  tyrtey uk,vn r 673w XYZ.text3 
  asdfwer' txt
  from dual)
select 
     regexp_replace(txt || 'XYZ', '(.*?(XYZ\s*))', '\2')
from t1;




Код: plsql
1.
2.
3.
4.
5.
6.
7.
  asdfwqer
  vbsdfgt
XYZ.text1
  wercv
XYZ.text2
XYZ.text3
XYZ
...
Рейтинг: 0 / 0
regexp
    #39361296
Maxim Demenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimyaz,

Код: plsql
1.
regexp_replace(txt || 'XYZ.text123', '.*?(XYZ\.\w*)', '\1 ',1,0,'n')



Regards

Maxim
...
Рейтинг: 0 / 0
regexp
    #39361350
dimyaz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Demenko,

Спасибо!
...
Рейтинг: 0 / 0
regexp
    #39361351
dimyaz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dimyazMaxim Demenko,

Спасибо!

А то у меня уже формула с три этажа получилась своя ))
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / regexp
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]