powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Регулярное выражение. Начинается НЕ с *комбинации* + указан набор символов
11 сообщений из 11, страница 1 из 1
Регулярное выражение. Начинается НЕ с *комбинации* + указан набор символов
    #39934501
IMNO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.

Подскажите пожалуйста.
Требуется выбрать строку, которая НЕ начинается с определенных комбинаций + та строка, которая подошла, должна иметь определённый набор символов.

Что-то типа "([^(AAA|BBB)][<CharSets>]){1,35}"

Вот пример:

Код: plsql
1.
2.
3.
4.
WITH
  TMain AS(SELECT 'A-Za-z0-9А-Яа-я+-.,:;* ()=?%/ўіІЎЁё' AS charSet FROM DUAL)
SELECT regexp_substr('/MARK/213213213AAAasdsadsa', REPLACE('/MARK/([^(AAA|BBB)][<CharSets>]){1,35}', '<CharSets>', charSet))
FROM TMain;



Оно мне берет первую букву "А" из той комбинации, которую надо исключить.

Проблема в том, что я знаю, как отдельно указать правило: "НЕ начинать строку с...", и как отдельно указать набор символов.
Но как указать оба этих правила одновременно, не могу придумать.
...
Рейтинг: 0 / 0
Регулярное выражение. Начинается НЕ с *комбинации* + указан набор символов
    #39934506
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IMNO
которая НЕ начинается с определенных комбинаций
Отрицание последовательности символов в Oracle-овом RE - нетривиальная (=бессмысленная) задача.
IMNO
Код: plsql
1.
'[^(AAA|BBB)]'

Т.е. синтаксис RE придумал сам, а докумегнтацию не читал?
...
Рейтинг: 0 / 0
Регулярное выражение. Начинается НЕ с *комбинации* + указан набор символов
    #39934643
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IMNO
..
Проблема в том, что я знаю, как отдельно указать правило: "НЕ начинать строку с...", и как отдельно указать набор символов.
Но как указать оба этих правила одновременно, не могу придумать.

условия каждого правила проверяйте отдельно (то есть - ляляля аnd тополя)
...
Рейтинг: 0 / 0
Регулярное выражение. Начинается НЕ с *комбинации* + указан набор символов
    #39934644
Фотография Кобанчег
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Регулярное выражение. Начинается НЕ с *комбинации* + указан набор символов
    #39934692
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IMNO,

выбрать строку, которая НЕ начинается с определенных комбинаций:

Код: plsql
1.
2.
3.
4.
...
WHERE строкa NOT LIKE 'комбинация1%'
  AND строкa NOT LIKE 'комбинация2%'
...



Или WHERE NOT REGEXP_LIKE...

SY.
...
Рейтинг: 0 / 0
Регулярное выражение. Начинается НЕ с *комбинации* + указан набор символов
    #39934696
IMNO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник


Два чая этому Джентльмену.

Менять наборы на один символ, а потом писать типа "[^<символ>]".

P.S. Какое-то извращение :)
...
Рейтинг: 0 / 0
Регулярное выражение. Начинается НЕ с *комбинации* + указан набор символов
    #39934708
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IMNO

Два чая этому Джентльмену.


Ты вообще понимаешь что "достать word1 и word3, между которыми нет word2" и "выбрать строку, которая НЕ начинается с определенных комбинаций" это две совершенно разные по сложности задачи. Твоя решается элементарным WHERE.

SY.
...
Рейтинг: 0 / 0
Регулярное выражение. Начинается НЕ с *комбинации* + указан набор символов
    #39934730
IMNO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SY
IMNO

Два чая этому Джентльмену.


Ты вообще понимаешь что "достать word1 и word3, между которыми нет word2" и "выбрать строку, которая НЕ начинается с определенных комбинаций" это две совершенно разные по сложности задачи. Твоя решается элементарным WHERE.

SY.

Ну думаю, что понимаю.
Дело в том, что в твоём примере строка жёстко начинается с не нужной комбинации.
В моем примере склеено несколько строк, а не жёстко начинается с не нужной комбинации.
То есть твой пример у меня как-то так будет выглядеть:

Код: plsql
1.
2.
3.
4.
...
WHERE строкa NOT LIKE '/MARK/213213213AAAasdsadsa%'
          AND....
...



Лучше я переформулирую свою задачу:
Мне нужно вырезать значение, которое находится между "/MARK/" и "AAA". Длина нужного значения может быть от 1 до 35 символов. Обычно я такие штуки делаю регулярками типа:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
WITH
  TMain AS(SELECT 'A-Za-z0-9А-Яа-я+-.,:;* ()=?%/ўіІЎЁё' AS charSet
                  , '`'                                 AS charChange 
           FROM DUAL)
SELECT regexp_replace(REPLACE('/MARK/test12aAAA9sdsadsa', 'AAA', charChange)
                      , REPLACE(REPLACE('^/MARK/([<CharSets>]{1,35}[^AAA]).+$', '<CharSets>', charSet), 'AAA', charChange), '\1')
FROM TMain;



Ну и в целом для информации. Это не самый сложный шаблон строки. Есть по-забористее,
поэтому я всегда использую регулярки. Я думаю, что это проще, чем упарываться через циклы, SUBSTR() и INSTR().
...
Рейтинг: 0 / 0
Регулярное выражение. Начинается НЕ с *комбинации* + указан набор символов
    #39934732
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
IMNO,

https://github.com/xtender/XT_REGEXP - для сложных регулярок
...
Рейтинг: 0 / 0
Регулярное выражение. Начинается НЕ с *комбинации* + указан набор символов
    #39934734
Dshedoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думаю, я как и большинство тут не совсем понимают, что ты хочешь получить.
То ты писал про возврат строки, которая отвечает условию, то теперь сабстр по шаблону.

Давай так, напиши пример в несколько строк исходных данных и что ты хочешь получить из них в итоге.
...
Рейтинг: 0 / 0
Регулярное выражение. Начинается НЕ с *комбинации* + указан набор символов
    #39934743
IMNO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кобанчег мне уже помог. Своим предыдущим сообщением я ответил на претензию в мою сторону. Можно расходится.
Всем спасибо, что обратили внимание на мою тему.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Регулярное выражение. Начинается НЕ с *комбинации* + указан набор символов
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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