Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / regexp_replace / 16 сообщений из 16, страница 1 из 1
04.06.2007, 13:06
    #34571819
msa@n-e.ru
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
regexp_replace
Здравствуйте!

Можно ли функции regexp_replace как-нибудь сказать, что бы она все найденные вхождения заменяла результатом работы другой функции, в которую будет передаваться само найденное вхождение. Т.е. например
Код: plaintext
1.
select regexp_replace('üStraße','(\\d*);','\\1','g')

вернет "252Stra223e", а нужно что бы вместо 252 и 223 были символы этих кодов?
...
Рейтинг: 0 / 0
04.06.2007, 17:08
    #34572908
msa@n-e.ru
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
regexp_replace
Точнее так:
Код: plaintext
1.
select regexp_replace('üStraße','&#(\\d*);','\\1','g')

Нужно что бы вернуло üStraße
...
Рейтинг: 0 / 0
05.06.2007, 03:53
    #34573825
snuk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
regexp_replace
Код: plaintext
1.
2.
3.
4.
create or replace function decode_entities(text) returns text as $$
  use HTML::Entities;
  return decode_entities(shift);
$$ language plperlu;
перекодирует также & < и т.д.
...
Рейтинг: 0 / 0
05.06.2007, 13:17
    #34574888
msa@n-e.ru
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
regexp_replace
Как раз не нужно, что бы перекодировались & и <. Нужно только XX;, где XXX-код символа, заменить на сам символ. Используя функцию regexp_replace это можно сделать?
...
Рейтинг: 0 / 0
05.06.2007, 13:19
    #34574900
msa@n-e.ru
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
regexp_replace
можно написать что-то ворде этого
Код: plaintext
1.
select regexp_replace('&#252;Stra&#223;e','&#(\\d*);',CHR('\\1'),'g')

???

Т.е. что бы вхождения заменились не значениями 252 и 223 а их символами?
...
Рейтинг: 0 / 0
05.06.2007, 13:28
    #34574932
pamir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
regexp_replace
msa@n-e.ruможно написать что-то ворде этого
Код: plaintext
1.
select regexp_replace('üStraße','(\\d*);',CHR('\\1'),'g')

???

Т.е. что бы вхождения заменились не значениями 252 и 223 а их символами?А проверить?

ERROR: invalid input syntax for integer: "\1"
SQL state: 22P02

Ведь сначала будет попытка выполнить CHR('\\1'), т.к. в функцию regexp_replace нужно передать параметры, а если параметр - результат функции, то сначала нужно получить этот результат.
...
Рейтинг: 0 / 0
05.06.2007, 15:54
    #34575485
msa@n-e.ru
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
regexp_replace
pamir msa@n-e.ruможно написать что-то ворде этого
Код: plaintext
1.
select regexp_replace('üStraße','(\\d*);',CHR('\\1'),'g')

???

Т.е. что бы вхождения заменились не значениями 252 и 223 а их символами?А проверить?

ERROR: invalid input syntax for integer: "\1"
SQL state: 22P02

Ведь сначала будет попытка выполнить CHR('\\1'), т.к. в функцию regexp_replace нужно передать параметры, а если параметр - результат функции, то сначала нужно получить этот результат.

Так понятно , что будет ошибка. Вот я и хотел спросить можно как-нить в функцию regexp_replace передать в качестве третего параметра результат работы другой функции от найденного вхождения
...
Рейтинг: 0 / 0
05.06.2007, 16:00
    #34575502
pamir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
regexp_replace
msa@n-e.ru pamir msa@n-e.ruможно написать что-то ворде этого
Код: plaintext
1.
select regexp_replace('üStraße','(\\d*);',CHR('\\1'),'g')

???

Т.е. что бы вхождения заменились не значениями 252 и 223 а их символами?А проверить?

ERROR: invalid input syntax for integer: "\1"
SQL state: 22P02

Ведь сначала будет попытка выполнить CHR('\\1'), т.к. в функцию regexp_replace нужно передать параметры, а если параметр - результат функции, то сначала нужно получить этот результат.

Так понятно , что будет ошибка. Вот я и хотел спросить можно как-нить в функцию regexp_replace передать в качестве третего параметра результат работы другой функции от найденного вхожденияАааа, ну так автор топики задает в точности такой же вопрос.
...
Рейтинг: 0 / 0
05.06.2007, 16:01
    #34575508
msa@n-e.ru
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
regexp_replace
pamir msa@n-e.ru pamir msa@n-e.ruможно написать что-то ворде этого
Код: plaintext
1.
select regexp_replace('üStraße','(\\d*);',CHR('\\1'),'g')

???

Т.е. что бы вхождения заменились не значениями 252 и 223 а их символами?А проверить?

ERROR: invalid input syntax for integer: "\1"
SQL state: 22P02

Ведь сначала будет попытка выполнить CHR('\\1'), т.к. в функцию regexp_replace нужно передать параметры, а если параметр - результат функции, то сначала нужно получить этот результат.

Так понятно , что будет ошибка. Вот я и хотел спросить можно как-нить в функцию regexp_replace передать в качестве третего параметра результат работы другой функции от найденного вхожденияАааа, ну так автор топики задает в точности такой же вопрос.

Так аффтар я и есть
...
Рейтинг: 0 / 0
05.06.2007, 16:03
    #34575516
pamir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
regexp_replace
msa@n-e.ruТак аффтар я и естьБлин, пойду выпью яду :))
Сорри.

Раз вы тут - вопрос. У вас в десятичном виде коды символов?
...
Рейтинг: 0 / 0
05.06.2007, 16:05
    #34575527
msa@n-e.ru
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
regexp_replace
pamir msa@n-e.ruТак аффтар я и естьБлин, пойду выпью яду :))
Сорри.

Раз вы тут - вопрос. У вас в десятичном виде коды символов?

Коды символов ваще в каких-то html-тегах. &#xxx;, где ххх - код символа
...
Рейтинг: 0 / 0
05.06.2007, 16:08
    #34575534
msa@n-e.ru
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
regexp_replace
XXX-десятичное число
...
Рейтинг: 0 / 0
05.06.2007, 16:12
    #34575550
pamir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
regexp_replace
msa@n-e.ru pamir msa@n-e.ruТак аффтар я и естьБлин, пойду выпью яду :))
Сорри.

Раз вы тут - вопрос. У вас в десятичном виде коды символов?

Коды символов ваще в каких-то html-тегах. xx;, где ххх - код символаНу ясно, я про xxx - они в десятичном, судя по всему.
А предложенное выше решение - написать хранимку и уже в ней решать вопрос - не годится?

Я почему про десятичные спрашивал - вот такое
select '\41'

вернет "!" - потому что 41 это код "!", но в восьмеричном виде...
Т.к. с символами не особо работал, может есть такая же нотация, но когда код указывается в десятичном виде? Тогда все решалось бы.
...
Рейтинг: 0 / 0
05.06.2007, 16:26
    #34575604
msa@n-e.ru
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
regexp_replace
pamir msa@n-e.ru[quot pamir][quot msa@n-e.ru]Так аффтар я и естьБлин, пойду выпью яду :))
Сорри.

Раз вы тут - вопрос. У вас в десятичном виде коды символов?

Коды символов ваще в каких-то html-тегах.
...
Рейтинг: 0 / 0
05.06.2007, 16:28
    #34575616
msa@n-e.ru
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
regexp_replace
pamir msa@n-e.ru[quot pamir][quot msa@n-e.ru]Так аффтар я и естьБлин, пойду выпью яду :))
Сорри.

Раз вы тут - вопрос. У вас в десятичном виде коды символов?

Коды символов ваще в каких-то html-тегах.
...
Рейтинг: 0 / 0
05.06.2007, 16:30
    #34575622
msa@n-e.ru
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
regexp_replace
Хотелось использовать только регулярку.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / regexp_replace / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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