Search Postgresql Archives

Re: Regular expression character escape

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



On 24/02/2012 17:43, Heiko Wundram wrote:
> Am 24.02.2012 17:40, schrieb Ronan Dunklau:
>> On 24/02/2012 17:09, Heiko Wundram wrote:
>>> Use the corresponding function of your programming language/framework of
>>> choice. E.g. Python delivers this as re.escape().
>>
>> Thank you, but as I wrote in the original post, I don't know how
>> postgresql and python differ in their regexp syntax. Specifically, I
>> know that re.escape escapes any non-alphanumeric character, including
>> accented letters.
>>
>> If you have any evidence proving that everything will work fine with
>> re.escape, I'll be more than happy to use it.
> 
> This will work (AFAICT, _and_ as far as I've used it): the regex-syntax
> of Python is a superset of the regex-syntax of PostgreSQL (both are
> based on PCRE, not on the library, but the syntax), and as such you'll
> possibly do "too much" quoting, but never too little when simply using
> the Python-builtin.

Unfortunately for my use case, "too much" quoting can lead to errors in
postgresql.

I just tested it using the following code:

postgres=# create or replace function escape_re(atext varchar) returns
varchar as $$
  import re
  return re.escape(atext.decode('utf8'))
$$ language plpythonu;

postgres=# select escape_re('testé');
 escape_re
-----------
 test\é

postgres=# select 'testé' ~ escape_re('testé');
ERROR:  invalid regular expression: invalid escape \ sequence

--
Ronan Dunklau

-- 
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general


[Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Programming PHP]     [Kernel Newbies]     [PHP Classes]     [Find Someone Nice]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]

Add to Google Powered by Linux