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

Откуда:
Сообщений: 8
Здравствуйте!

Мне регулярные выражения в новинку... подскажите плиз, если кто знает, как решить такую задачу:

надо в строке заменить некоторые спецсимволы (заданный набор) на их эквиваленты из ASCII-таблицы (&#code;), где code - код символа.

Как это можно сделать используя REGEXP_REPLACE?
19 фев 07, 23:02    [3807687]     Ответить | Цитировать Сообщить модератору
 Re: REGEXP замена спецсимволов  [new]
Elic
Member

Откуда:
Сообщений: 29991
Coop
заменить некоторые спецсимволы (заданный набор) на их эквиваленты из ASCII-таблицы (�code;), где code - код символа.
Как это можно сделать используя REGEXP_REPLACE?
Этого не сделать простым вызовом какой-нибудь встроенной функции.
Это решается простым replace-ом нанизыванием либо в цикле.
20 фев 07, 00:55    [3807853]     Ответить | Цитировать Сообщить модератору
 Re: REGEXP замена спецсимволов  [new]
Coop
Member

Откуда:
Сообщений: 8
А я думал можно... в PERL такая возможность вроде есть...

Все равно спасибо за ответ :)
20 фев 07, 08:51    [3808159]     Ответить | Цитировать Сообщить модератору
 Re: REGEXP замена спецсимволов  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
translate - тут в масть
20 фев 07, 12:12    [3809518]     Ответить | Цитировать Сообщить модератору
 Re: REGEXP замена спецсимволов  [new]
Elic
Member

Откуда:
Сообщений: 29991
orawish
translate - тут в масть
А подумать? Здесь не нужна трансляция символа в символ :)
20 фев 07, 12:17    [3809537]     Ответить | Цитировать Сообщить модератору
 Re: REGEXP замена спецсимволов  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
Elic
orawish
translate - тут в масть
А подумать? Здесь не нужна трансляция символа в символ :)

Конечно, лажанул.. Вот - пришлось решать, таки с транслитом..
Поскольку автор не уточнил каких ему символов запоменять - я меняю на энто все цифры
(что, имхо,как раз - максимально далеко от жизни)
with t as (select 'wert12sdo0fgh5678fgh8' s from dual)
,t2 as (select level lv,regexp_substr(s,'([0-9]|[^0-9]+)', 1, level, 'm') s2
  from t connect by regexp_substr(s, '([0-9]|[^0-9]+)', 1, level, 'm') is not null)
select max(replace(sys_connect_by_path(decode(translate(s2,'~0123456789','~'),null,'&#'||ascii(s2)||';',s2),'~'),'~')) r;
wert12sdo0fgh5678fgh8
from t2 start with lv=1 connect by prior lv+1= lv;
20 фев 07, 12:54    [3809803]     Ответить | Цитировать Сообщить модератору
 Re: REGEXP замена спецсимволов  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
опс.. руки и клипборд
with t as (select 'wert12sdo0fgh5678fgh8' s from dual)
,t2 as (select level lv,regexp_substr(s,'([0-9]|[^0-9]+)', 1, level, 'm') s2
  from t connect by regexp_substr(s, '([0-9]|[^0-9]+)', 1, level, 'm') is not null)
select max(replace(sys_connect_by_path(decode(translate(s2,'~0123456789','~'),null,'&#'||ascii(s2)||';',s2),'~'),'~')) r;
from t2 start with lv=1 connect by prior lv+1= lv;

wert12sdo0fgh5678fgh8
20 фев 07, 12:56    [3809818]     Ответить | Цитировать Сообщить модератору
 Re: REGEXP замена спецсимволов  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
orawish
опс.. руки и клипборд

Всё равно - сожрался результат.. :(
В приставке (назло кондуктору :) - переставляю символы..
with t as (select 'wert12sdo0fgh5678fgh8' s from dual)
,t2 as (select level lv,regexp_substr(s,'([0-9]|[^0-9]+)', 1, level, 'm') s2
  from t connect by regexp_substr(s, '([0-9]|[^0-9]+)', 1, level, 'm') is not null)
select max(replace(sys_connect_by_path(decode(translate(s2,'~0123456789','~'),null,'#&'||ascii(s2)||';',s2),'~'),'~')) r
from t2 start with lv=1 connect by prior lv+1= lv;

wert#&49;#&50;sdo#&48;fgh#&53;#&54;#&55;#&56;fgh#&56;
20 фев 07, 13:03    [3809844]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить