powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Regexp возврат значения параметра из строки
16 сообщений из 16, страница 1 из 1
Regexp возврат значения параметра из строки
    #39805207
Dshedoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
with q as (select 'SEPARATORF101=11SEPARATORF104=12SEPARATORF401=13SEPARATOR' f from dual union all
select 'SEPARATORF111=21SEPARATORF101=22SEPARATORF104=23SEPARATOR' f from dual union all
select 'SEPARATORF104=31SEPARATORF102=32SEPARATORF401=33SEPARATOR' f from dual)

select regexp_substr(q.f,'F104=[^SEPARATOR]*') from q



Получаю
Код: plsql
1.
2.
3.
F104=12
F104=23
F104=31


Можно ли этот же сабстр добить до того, чтобы возвращалось только значение параметра (то что идёт между "=" и "SEPARATOR")?
Я хочу получить не "F104=12", а "12".
Код: plsql
1.
2.
3.
12
23
31



Так же думал через реплейс, т.е. не выдёргивать значение параметра, а тупо убирать всё, кроме этого параметра, но ничего путного не вышло.
Может кто подскажет типовое решение через регулярку или тыкнет куда читать?
Сабстры/инстры/сабстры_регэкспов не интересуют.
...
Рейтинг: 0 / 0
Regexp возврат значения параметра из строки
    #39805213
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DshedooСабстры/инстры/сабстры_регэкспов не интересуют.substr+3*instr
...
Рейтинг: 0 / 0
Regexp возврат значения параметра из строки
    #39805216
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DshedooМожет кто подскажет типовое решение через регулярку или тыкнет куда читать?
Код: plsql
1.
regexp_substr(q.f,'SEPARATORF104=(\d+)SEPARATOR',1,1,null,1)
...
Рейтинг: 0 / 0
Regexp возврат значения параметра из строки
    #39805255
Dshedoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous,

Спасибо.

А можете подсказать обработку для любых печатных символов и нулла:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
with q as (select 'SEPARATORF101=11SEPARATORF104=12SEPARATORF401=13SEPARATOR' f from dual union all
select 'SEPARATORF111=21SEPARATORF101=22SEPARATORF104=23SEPARATOR' f from dual union all
select 'SEPARATORF104=31SEPARATORF102=32SEPARATORF401=33SEPARATOR' f from dual union all
select 'SEPARATORF111=21SEPARATORF101=22SEPARATORF104=4 3SEPARATOR' f from dual union all
select 'SEPARATORF111=21SEPARATORF101=22SEPARATORF104=5@3SEPARATOR' f from dual union all
select 'SEPARATORF104=SEPARATORF101=22SEPARATORF105=73SEPARATOR' f from dual union all
select 'SEPARATORF111=21SEPARATORF104=6wq2SEPARATORF101=22SEPARATOR' f from dual)

select regexp_substr(q.f,'F104=(.+)SEPARATOR',1,1,null,1) from q
...
Рейтинг: 0 / 0
Regexp возврат значения параметра из строки
    #39805257
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DshedooА можете подсказать обработку для любых печатных символов и нулла: http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM
Dshedoo
Код: plsql
1.
(.+)SEPARATOR

Не надо быть жадиной. Но с таким весьма продуманным разделителем....
...
Рейтинг: 0 / 0
Regexp возврат значения параметра из строки
    #39805310
Dshedoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicНе надо быть жадиной
Надо.

Получилось что-то типа такого:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
with q as (select 'SEPARATORF101=11SEPARATORF104=12SEPARATORF401=13SEPARATOR' f from dual union all
select 'SEPARATORF111=21SEPARATORF101=22SEPARATORF104=23SEPARATOR' f from dual union all
select 'SEPARATORF104=31SEPARATORF102=32SEPARATORF401=33SEPARATOR' f from dual union all
select 'SEPARATORF111=21SEPARATORF101=2F104=2SEPARATORF104=4 3SEPARATOR' f from dual union all
select 'F111=21SEPARATORF101=22SEPARATORF104=5@3SEPARATOR' f from dual union all
select 'SEPARATORF104=SEPARATORF101=22SEPARATORF105=73SEPARATOR' f from dual union all
select 'SEPARATORF111=21SEPARATORF104=6wQ2SEPARATORF101=22SEPARATOR' f from dual)

select regexp_substr(q.f,'SEPARATORF104=([^SEPARATOR].+?)SEPARATOR',1,1, null, 1) from q



Просмотр назад/вперёд на 10ке не реализован?
...
Рейтинг: 0 / 0
Regexp возврат значения параметра из строки
    #39805312
Dshedoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DshedooElicНе надо быть жадиной
Надо.
*Действительно, не надо. Спасибо.
...
Рейтинг: 0 / 0
Regexp возврат значения параметра из строки
    #39805322
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dshedoo
Код: plsql
1.
[^SEPARATOR].+?

Попробуй перевести, что это должно означать.
...
Рейтинг: 0 / 0
Regexp возврат значения параметра из строки
    #39805333
Dshedoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-,

Что я чудак с другой буквы?

Код: plsql
1.
select regexp_substr(q.f,'SEPARATORF104=(.*?)SEPARATOR',1,1, null, 1) from q



Так?
...
Рейтинг: 0 / 0
Regexp возврат значения параметра из строки
    #39805348
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DshedooЧто я чудак с другой буквы?Разницу между множеством и строкой не понимаешь?
...
Рейтинг: 0 / 0
Regexp возврат значения параметра из строки
    #39805373
Dshedoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic,
Я только начинаю изучать регулярки, поэтому буду рад любой, брошенной в меня, ссылке.

Если я правильно понимаю, то
regexp_substr(q.f,'SEPARATORF104=(.*?)SEPARATOR',1,1, null, 1)
Для
'SEPARATORF104=31SEPARATORF102=32SEPARATORF401=33SEPARATOR'
Создаёт множество:
'SEPARATORF104=31SEPARATORF102=32SEPARATORF401=33SEPARATOR'
'SEPARATORF104=31SEPARATORF102=32SEPARATOR'
'SEPARATORF104=31SEPARATOR'

Указывая ленивость, я беру самое короткое подмножество, т.е. 'SEPARATORF104=31SEPARATOR'.

И sub_expression'ом регулярки я указываю, что мне из этого нужно только подвыражение из шаблона
То есть всё, что между SEPARATORF104= и SEPARATOR
...
Рейтинг: 0 / 0
Regexp возврат значения параметра из строки
    #39805380
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Regexp возврат значения параметра из строки
    #39805398
Dshedoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-Dshedoo
Код: plsql
1.
[^SEPARATOR].+?

Попробуй перевести, что это должно означать.

Что масло масленое.

regexp_substr(q.f,'SEPARATORF104=([^SEPARATOR]*)SEPARATOR',1,1, null, 1) --мы берём строку, внутри которой нет сепаратора
либо
regexp_substr(q.f,'SEPARATORF104=(.*?)SEPARATOR',1,1, null, 1)--мы берём самую короткую строку
...
Рейтинг: 0 / 0
Regexp возврат значения параметра из строки
    #39805402
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dshedooregexp_substr(q.f,'SEPARATORF104=([^SEPARATOR]*)SEPARATOR',1,1, null, 1) --мы берём строку, внутри которой нет сепаратора
Эээ... "Не човчем" (с)
...
Рейтинг: 0 / 0
Regexp возврат значения параметра из строки
    #39805410
Dshedoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousDshedooregexp_substr(q.f,'SEPARATORF104=([^SEPARATOR]*)SEPARATOR',1,1, null, 1) --мы берём строку, внутри которой нет сепаратора
Эээ... "Не човчем" (с)
Строку, в подвыражении которой нет сепаратора.
[^SEPARATOR] -по факту, конечно, это значит "не содержит следующих заглавных букв: S,E,P,A,R,T,O".

Например, у указанного выше примера, значение подвыражения будут следующие:
'SEPARATORF104=31SEPARATORF102=32SEPARATORF401=33SEPARATOR'
'SEPARATORF104=31SEPARATORF102=32SEPARATOR'
'SEPARATORF104=31SEPARATOR'

И мы можем либо жадно взять то, которое не содержит сепаратора, либо взять лениво.
...
Рейтинг: 0 / 0
Regexp возврат значения параметра из строки
    #39805412
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dshedooandrey_anonymousпропущено...

Эээ... "Не човчем" (с)
Строку, в подвыражении которой нет сепаратора.
[^SEPARATOR] -по факту, конечно, это значит "не содержит следующих заглавных букв: S,E,P,A,R,T,O".
Угу.
А теперь проверяйте свое решение "для любых печатных символов":
Код: plsql
1.
SEPARATORF104=ART77SEPARATOR
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Regexp возврат значения параметра из строки
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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