Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Регулярные выражения  [new]
regex
Guest
Доброго времени суток! Как при помощи регуляных выражений регить такую задачу. Перечислять ряд заглавных букв на которых может начинаться слово и исключить одно не нужное. Например имее

Иванов
Петров
Сидоров
Пеньков
Дождев
Павлов

Выбрать

Иванов(все что на И)
Петров, Пеньков(все что на П)
и исключить Павлова

Желательно одним регулярным выражением
25 май 11, 15:46    [10707565]     Ответить | Цитировать Сообщить модератору
 Re: Регулярные выражения  [new]
Elic
Member

Откуда:
Сообщений: 29976
regex
и исключить
Желательно одним регулярным выражением
ИзмышлизмЪ.
25 май 11, 15:53    [10707652]     Ответить | Цитировать Сообщить модератору
 Re: Регулярные выражения  [new]
regex
Guest
Elic,

не понял33
25 май 11, 16:00    [10707727]     Ответить | Цитировать Сообщить модератору
 Re: Регулярные выражения  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 6692
regex,

на правах шутки
SQL> var excl varchar2(15)
SQL> var incl varchar2(15)
SQL> exec :excl:='Павлов';

PL/SQL procedure successfully completed.

SQL> exec :incl:='И|П';

PL/SQL procedure successfully completed.

SQL> with t as (select s
  2             from xmltable('ora:tokenize(.,",")' passing 'Иванов,Петров,Пупкин,Павлов,Сидоров,Зозо' columns s varchar2(15) path '.'))
  3  select *
  4  from t
  5  where regexp_like(replace(s,:excl),'(^('||:incl||'))');

S
---------------
Иванов
Петров
Пупкин

Виталий,
формально условие соблюдено - одно регулярное выражение Картинка с другого сайта.
25 май 11, 16:14    [10707833]     Ответить | Цитировать Сообщить модератору
 Re: Регулярные выражения  [new]
Сергей Арсеньев
Member

Откуда:
Сообщений: 4118
env
формально условие соблюдено - одно регулярное выражение Картинка с другого сайта.

Не совсем, слова на одну букву не в одной строке на выходе. :)
25 май 11, 16:16    [10707851]     Ответить | Цитировать Сообщить модератору
 Re: Регулярные выражения  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 6692
Сергей Арсеньев,

Это ужасно! Как я мог!? Ну да ладно, это поиском легко найти.
25 май 11, 16:26    [10707978]     Ответить | Цитировать Сообщить модератору
 Re: Регулярные выражения  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 6692
Сергей,

Так будет точнее
SQL> col s format a50
SQL> with t as (select s
  2             from xmltable('ora:tokenize(.,",")' passing 'Иванов,Петров,Пупкин,Павлов,Сидоров,Зозо' columns s varchar2(15) path '.'))
  3  select listagg(s,',') within group (order by s) s
  4  from t
  5  where regexp_like(replace(s,:excl),'(^('||:incl||'))')
  6  group by substr(s,1,1);

S
--------------------------------------------------
Иванов
Петров,Пупкин
25 май 11, 16:31    [10708034]     Ответить | Цитировать Сообщить модератору
 Re: Регулярные выражения  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
11g+
with t as (select 'Иванов' s from dual
     union select 'Петров'   from dual
     union select 'Сидоров'  from dual
     union select 'Пеньков'  from dual
     union select 'Дождев'   from dual
     union select 'Павлов'   from dual
) select s
   from t 
  where regexp_substr(s,'^(Петров)?([ПСИ].*)?$',1,1,null,2) is not null;
пример чисто из спортивного интереса - практической пользы (кроме вреда ) не имеет
25 май 11, 18:26    [10708948]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Регулярные выражения  [new]
nurok
Member

Откуда:
Сообщений: 1
Добрый день!
Не подскажете ли, как исключить слово в строке? например, есть строка 'begin word1 end begin word2 end', необходимо найти блок begin/end, где не встречается слово word1. В java, например, есть механизм (?!word1). Как сделать в pl/sql
6 авг 14, 10:24    [16404883]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить