Re: Re: Allow Reg Expressions in Position function

Поиск
Список
Период
Сортировка
От Geoff Winkless
Тема Re: Re: Allow Reg Expressions in Position function
Дата
Msg-id CAEzk6fdJwwG9aOFBDy-Vkj7OLZwvDriBvLU7Omuw0XEebbdtqw@mail.gmail.com
обсуждение исходный текст
Список pgsql-general
On Mon, 20 Aug 2018 at 09:22, Nick Dro <postgresql@walla.co.il> wrote:

This incorrect.
SELECT position(substring('https://www.webexample.com/s/help?' FROM '/(s|b|t)/') IN 'https://www.webexample.com/s/help?');
 
Gives 5. It's wrong.



On Mon, 20 Aug 2018 at 09:22, Nick Dro <postgresql@walla.co.il> wrote:

This incorrect.
SELECT position(substring('https://www.webexample.com/s/help?' FROM '/(s|b|t)/') IN 'https://www.webexample.com/s/help?');
 
Gives 5. It's wrong.

For some reason, substring() returns the parenthesised subexpression rather than the top level.

The comment in testregexsubstr does say that it does this, but it's not clear from the documentation at all, unless I'm missing where it says it.

You can work around this by putting parentheses around the whole expression, because that way the first subexpression is the whole match.

db=# SELECT position(substring('https://www.webexample.com/s/help?' FROM '(/(s|b|t)/)') IN 'https://www.webexample.com/s/help?');
 position
----------
       27

Geoff

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

Предыдущее
От: Ken Tanzer
Дата:
Сообщение: Re: Allow Reg Expressions in Position function
Следующее
От: "Daniel Verite"
Дата:
Сообщение: Re: Linker errors while creating a PostgreSQL C extension function.