Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 regexp_like - всё, кроме букв и определенных символов  [new]
feagor
Member

Откуда: Москва
Сообщений: 256
Задача - вырезать из строки все символы, кроме разрешенных
разрешенные - A-z, А-я, 0-9, пробелы, запятые, а также пул символов ./\-+()*_@№$!&
Проблема возникает как минимум с символом "+", так как он не хочет экранироваться

select regexp_replace('буквы - абВГдAbCd, цифры - 12340, разреш.символы - $!&\/-+(),*_@№, запрещ - <>[]{}=','[^[:alnum:][:blank:]-$@№!&]','') from dual

как только начинаю добавлять управляющие символы - начинается ерунда, прошу помочь
14 май 19, 15:10    [21884517]     Ответить | Цитировать Сообщить модератору
 Re: regexp_like - всё, кроме букв и определенных символов  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 2783
feagor,

translate не подходит?

.....
stax
14 май 19, 15:16    [21884525]     Ответить | Цитировать Сообщить модератору
 Re: regexp_like - всё, кроме букв и определенных символов  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18343
with t as (select 'абвгд12345Ё!"№;%:?*()_-+[]{};:"' s from dual)
select translate(s,chr(0)||translate(s,chr(0)||'аг1+-',chr(0)), chr(0))
from t;
14 май 19, 15:21    [21884532]     Ответить | Цитировать Сообщить модератору
 Re: regexp_like - всё, кроме букв и определенных символов  [new]
Dshedoo
Member

Откуда:
Сообщений: 393
select regexp_replace('буквы - абВГдAbCd, цифры - 12340, разреш.символы - $!&\/-+(),*_@№, запрещ - <>[]{}=','[^[:alnum:][:blank:](),_.*\/+$@№!&-]','')
 from dual


"-" в конец перекинь, чтобы регулярка не пыталась выбрать диапазон от [:blank:] до $.
14 май 19, 15:23    [21884533]     Ответить | Цитировать Сообщить модератору
 Re: regexp_like - всё, кроме букв и определенных символов  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 2783
feagor,

  1  select regexp_replace(
  2  'буквы - абВГдAbCd, цифры - 12340, разреш.символы - $!&\/-+(),*_@№, запрещ - <>[]{}='
  3* ,'[^[:alnum:][:blank:]-$@№!&///\/+/(/)/,/*/.]','') from dual
SQL> /

REGEXP_REPLACE('БУКВЫ-АБВГДABCD,ЦИФРЫ-12340,РАЗРЕШ.СИМВОЛЫ-$!&\/-+(),*_@№,З
---------------------------------------------------------------------------
буквы - абВГдAbCd, цифры - 12340, разреш.символы - $!&\/-+(),*@№, запрещ -


....
stax
14 май 19, 15:31    [21884548]     Ответить | Цитировать Сообщить модератору
 Re: regexp_like - всё, кроме букв и определенных символов  [new]
Elic
Member

Откуда:
Сообщений: 29979
Stax
'[^[:alnum:][:blank:]-$@№!&///\/+/(/)/,/*/.]'
Перебор вследствие незнания. В данном конкретном случае - безвредный.
14 май 19, 15:41    [21884560]     Ответить | Цитировать Сообщить модератору
 Re: regexp_like - всё, кроме букв и определенных символов  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 2783
Elic
Stax
'[^[:alnum:][:blank:]-$@№!&///\/+/(/)/,/*/.]'
Перебор вследствие незнания. В данном конкретном случае - безвредный.

вроде работает,
или на чем-то слетит?

.....
stax
14 май 19, 15:52    [21884566]     Ответить | Цитировать Сообщить модератору
 Re: regexp_like - всё, кроме букв и определенных символов  [new]
Elic
Member

Откуда:
Сообщений: 29979
Stax
вроде работает,
RTFM In the list, all operators except these are treated as literals:
14 май 19, 16:01    [21884578]     Ответить | Цитировать Сообщить модератору
 Re: regexp_like - всё, кроме букв и определенных символов  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 2783
andrey_anonymous
with t as (select 'абвгд12345Ё!"№;%:?*()_-+[]{};:"' s from dual)
select translate(s,chr(0)||translate(s,chr(0)||'аг1+-',chr(0)), chr(0))
from t;

не проще просто перчислить запрещенное?

  1  select translate('буквы - абВГдAbCd, цифры - 12340, разреш.символы - $!&\/-+(),*_@№, запрещ - <>[]{}='
  2                  ,'@<>[]{}=','@') r
  3* from dual
SQL> /

R
----------------------------------------------------------------------------
буквы - абВГдAbCd, цифры - 12340, разреш.символы - $!&\/-+(),*_@№, запрещ -

SQL>


ps
тормознул в 21884560 Смешались в кучу кони, люди. И косые / \ )

....
stax
14 май 19, 16:37    [21884600]     Ответить | Цитировать Сообщить модератору
 Re: regexp_like - всё, кроме букв и определенных символов  [new]
feagor
Member

Откуда: Москва
Сообщений: 256
Stax,

нет, нужно вырезать всё кроме указанных, я лишь для примера несколько запрещенных показал, нужно работать именно по исключению всех, кроме разрешенных
14 май 19, 17:05    [21884624]     Ответить | Цитировать Сообщить модератору
 Re: regexp_like - всё, кроме букв и определенных символов  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 2783
feagor,

понял, нет списка запрещенных

....
stax
14 май 19, 17:09    [21884626]     Ответить | Цитировать Сообщить модератору
 Re: regexp_like - всё, кроме букв и определенных символов  [new]
feagor
Member

Откуда: Москва
Сообщений: 256
Elic,

спс
14 май 19, 17:19    [21884639]     Ответить | Цитировать Сообщить модератору
 Re: regexp_like - всё, кроме букв и определенных символов  [new]
feagor
Member

Откуда: Москва
Сообщений: 256
select regexp_replace('буквы - абВГдAbCd, цифры - 12340, разреш.символы - $!&\/-+()*_@№, запрещ - &#65533;<>[]{}=',
'[^a-zA-Zа-яА-Я0-9 .,$!&\/+()*_@№-]',
'') from dual;

Вроде нормально работает
Спасибо всем.
символ "-" должен был быть в конце
14 май 19, 17:24    [21884645]     Ответить | Цитировать Сообщить модератору
 Re: regexp_like - всё, кроме букв и определенных символов  [new]
Elic
Member

Откуда:
Сообщений: 29979
feagor
символ "-" должен был быть в конце
Твоё "sps" мимо кассы, раз ты ни черта не понял.
15 май 19, 08:07    [21884924]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить