powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вопрос по регулярному выражению
6 сообщений из 6, страница 1 из 1
Вопрос по регулярному выражению
    #40001584
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть строка, из которой нужно извлечь instagram-аккаунт.
Если он указан, то он соответствует такому шаблону: (instagram[ -]+@?(\S+))
Сейчас я нужные данные извлекаю с помощью regexp_replace:
Код: plsql
1.
case when regexp_like(...) then regexp_replace(S, '^.*(...).*$', '\2') end


А можно ли обойтись только regexp_substr?
В регулярных выражениях вроде бы есть возможность look-ahead, по идее должно сработать такое выражение:
Код: plsql
1.
regexp_substr(S, '(?=instagram[ -]+@?)(\S+)', 1, 1, 'i')


Но почему-то не работает.
У меня ошибка в шаблоне? Или в Oracle 10g эти возможности не поддерживаются?
...
Рейтинг: 0 / 0
Вопрос по регулярному выражению
    #40001606
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Alibek B.
В регулярных выражениях вроде бы есть возможность look-ahead
в оракле в регулярках look ahead/behind нет, но в твоем случае они и не нужны.

Alibek B.
(instagram[ -]+@?(\S+))
очень очень сомнительный какой-то шаблон, лучше бы привел реальные примеры. А так, если это маска правильная то должны подойти все эти строки:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
with t(str) as (
select * 
from table(sys.odcivarchar2list(
'instagram - - - @123.char,test-123',
'instagram - - - 123.char,test-123',
'instagram-------123.char,test-123',
'instagram-------//////////////',
'instagram------- [][]{}{}$@#',
'instagram-------@@@@@@@@@@@@@@'
)))
select str, regexp_substr(str,'instagram[ -]+@?(\S+)',1,1,null,1) inst_acc
from t:


Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
STR                                    INST_ACC
-------------------------------------- -------------------
instagram - - - @123.char,test-123     123.char,test-123
instagram - - - 123.char,test-123      123.char,test-123
instagram-------123.char,test-123      123.char,test-123
instagram-------//////////////         //////////////
instagram------- [][]{}{}$@#           [][]{}{}$@#
instagram-------@@@@@@@@@@@@@@         @@@@@@@@@@@@@
...
Рейтинг: 0 / 0
Вопрос по регулярному выражению
    #40001610
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtender
Код: plsql
1.
regexp_substr(str,'instagram[ -]+@?(\S+)',1,1,null,1)

Alibek B.
10g
...
Рейтинг: 0 / 0
Вопрос по регулярному выражению
    #40001681
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В документации последним аргументом является match_parameter, номер группы указать нельзя. А так это было бы удобно.
Раз look-ahead отсутствует, значит остается только regexp_replace?
...
Рейтинг: 0 / 0
Вопрос по регулярному выражению
    #40001706
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.
В документации последним аргументом является match_parameter, номер группы указать нельзя. А так это было бы удобно.
Раз look-ahead отсутствует, значит остается только regexp_replace?

а у вас ,в самом деле, сервер 10.1 ?
...
Рейтинг: 0 / 0
Вопрос по регулярному выражению
    #40001942
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
orawish
Alibek B.
В документации последним аргументом является match_parameter, номер группы указать нельзя. А так это было бы удобно.
Раз look-ahead отсутствует, значит остается только regexp_replace?
а у вас ,в самом деле, сервер 10.1 ?
Не тупи: RTFM http://www.oracle.com/pls/topic/lookup?ctx=db102&id=SQLRF06303]10. 2 REGEXP_SUBSTR (FAQ)
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вопрос по регулярному выражению
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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