Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / как изменить регулярное выражение ? / 4 сообщений из 4, страница 1 из 1
21.03.2007, 16:27
    #34406503
strizh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как изменить регулярное выражение ?
Внутри ХП есть выражение вида
Код: plaintext
1.
iNumDoc := substring(stDocument from '^' || stPrefix || '(.*)' || stSuffix || '$')::integer;
Оно должно убирать префикс и суффикс с номера документа. Но не все номера документов в таблице имеют искомые
префиксы-суффиксы, так как некоторые документы создаются "шаловливыми ручками" без соблюдения правил
форматирования, принятых, если документ (или хотя-бы его номер) создается на основании чего-то и т.д. в другой ХП.
Префикс и суффикс могут быть многосимвольными, например, суффикс может быть
/07
а префикс
ОТК
а могут быть просто строкой нулевой длины.
Как я должен написать выражение, чтобы в iNumDoc попадал чистый номер без префикса-суффикса (как сейчас), или исходный номер документа, если в нем префиксов-суффиксов и не было вовсе.
Понятно, что можно написать
Код: plaintext
1.
2.
3.
4.
stDocument := (case when stDocument ~~ stPrefix || '%' then
  substring(stDocument from '^' || stPrefix || '(.*)') else stDocument);
iNumDoc := ((case when stDocument ~~ '%' || stSuffix then
  substring(stDocument from '(.*)' || stSuffix || '$') else stDocument)::integer);
Но зачем тогда регулярные выражения ? :)
...
Рейтинг: 0 / 0
21.03.2007, 16:47
    #34406578
LeXa NalBat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как изменить регулярное выражение ?
select substring ( 'prefixfoobarsuffix' from '^(?:prefix)?(.*?)(?:suffix)?$' );
...
Рейтинг: 0 / 0
22.03.2007, 11:21
    #34408004
strizh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как изменить регулярное выражение ?
Супер, Алексей !
Спасибо !
Я до такого не дошел бы. Вы, наверное, часто сложные строки обрабатываете ...
...
Рейтинг: 0 / 0
22.03.2007, 11:43
    #34408096
LeXa NalBat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как изменить регулярное выражение ?
только не в постгресе, а на перле. posix-регэкспы везде одинаковые.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / как изменить регулярное выражение ? / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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