Re: Plpgsql: Assign regular expression match to variable

Поиск
Список
Период
Сортировка
От Ian Barwick
Тема Re: Plpgsql: Assign regular expression match to variable
Дата
Msg-id 1d581afe0909010536g6fdb57a0u87c8d748fb9067b6@mail.gmail.com
обсуждение исходный текст
Ответ на Plpgsql: Assign regular expression match to variable  ("Leif B. Kristensen" <leif@solumslekt.org>)
Ответы Re: Plpgsql: Assign regular expression match to variable  ("Leif B. Kristensen" <leif@solumslekt.org>)
Список pgsql-sql
2009/9/1, Leif B. Kristensen <leif@solumslekt.org>:
> In Plpgsql, I've got this problem of how to assign an integer extracted
> from a regex to a variable. My approach so far feels kludgy:
>
> -- extract ^#(\d+) from txt
> IF txt SIMILAR TO E'#\\d+%' THEN
>     my_int := SUBSTR(SUBSTRING(txt, E'#\\d+'), 2,
>         LENGTH(SUBSTRING(txt, E'#\\d+')) -1)::INTEGER;
>     -- strip ^#\d+ from text
>     my_txt := REGEXP_REPLACE(txt, E'^#\\d+ ', '');
> END IF;
>
> What I'd like to do is something like this:
>
> my_int := MATCH(txt, '^#(\d+)')::INTEGER;
>
> which would assign the integer atom (\d+) to my_int.

This seems to do what you want:
 my_int := (REGEXP_MATCHES(txt, E'^#(\\d+)'))[1];


Ian Barwick


В списке pgsql-sql по дате отправления:

Предыдущее
От: "Leif B. Kristensen"
Дата:
Сообщение: Plpgsql: Assign regular expression match to variable
Следующее
От: "Leif B. Kristensen"
Дата:
Сообщение: Re: Plpgsql: Assign regular expression match to variable