Referencing parts captured by round brackets in a regex in 8.4.13

Started by Alexander Farberabout 13 years ago6 messagesgeneral
Jump to latest
#1Alexander Farber
alexander.farber@gmail.com

Hello,

how to get rid of this warning
on a PostgreSQL 8.4.13 prompt?

# select 'axxxxxyz' ~ '(.)\1\1';
WARNING: nonstandard use of escape in a string literal
LINE 1: select 'axxxxxyz' ~ '(.)\1\1';
^
HINT: Use the escape string syntax for escapes, e.g., E'\r\n'.
?column?
----------
f
(1 row)

The table 9-18 at
http://www.postgresql.org/docs/8.4/static/functions-matching.html
suggests that using \1 as above should be ok....

Thank you
Alex

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

#2Rob Sargent
robjsargent@gmail.com
In reply to: Alexander Farber (#1)
Re: Referencing parts captured by round brackets in a regex in 8.4.13

On 03/22/2013 08:53 AM, Alexander Farber wrote:

Hello,

how to get rid of this warning
on a PostgreSQL 8.4.13 prompt?

# select 'axxxxxyz' ~ '(.)\1\1';
WARNING: nonstandard use of escape in a string literal
LINE 1: select 'axxxxxyz' ~ '(.)\1\1';
^
HINT: Use the escape string syntax for escapes, e.g., E'\r\n'.
?column?
----------
f
(1 row)

The table 9-18 at
http://www.postgresql.org/docs/8.4/static/functions-matching.html
suggests that using \1 as above should be ok....

Thank you
Alex

Try \\1\\1

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

#3Alexander Farber
alexander.farber@gmail.com
In reply to: Rob Sargent (#2)
Re: Referencing parts captured by round brackets in a regex in 8.4.13

Thank you, this works better, but -

On Fri, Mar 22, 2013 at 3:57 PM, Rob Sargent <robjsargent@gmail.com> wrote:

On 03/22/2013 08:53 AM, Alexander Farber wrote:

# select 'axxxxxyz' ~ '(.)\1\1';
WARNING: nonstandard use of escape in a string literal
LINE 1: select 'axxxxxyz' ~ '(.)\1\1';
^
HINT: Use the escape string syntax for escapes, e.g., E'\r\n'.
?column?
----------
f
(1 row)

The table 9-18 at
http://www.postgresql.org/docs/8.4/static/functions-matching.html
suggests that using \1 as above should be ok....

the result is correctly "true" now,
but the warning is still there, why?

# select 'axxxxxyz' ~ '(.)\\1\\1';
WARNING: nonstandard use of \\ in a string literal
LINE 1: select 'axxxxxyz' ~ '(.)\\1\\1';
^
HINT: Use the escape string syntax for backslashes, e.g., E'\\'.
?column?
----------
t
(1 row)

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

#4Victor Yegorov
vyegorov@gmail.com
In reply to: Alexander Farber (#3)
Re: Referencing parts captured by round brackets in a regex in 8.4.13

2013/3/22 Alexander Farber <alexander.farber@gmail.com>:

the result is correctly "true" now,
but the warning is still there, why?

# select 'axxxxxyz' ~ '(.)\\1\\1';
WARNING: nonstandard use of \\ in a string literal
LINE 1: select 'axxxxxyz' ~ '(.)\\1\\1';
^
HINT: Use the escape string syntax for backslashes, e.g., E'\\'.
?column?
----------
t
(1 row)

Please, check this part of the docs (note the Caution):
http://www.postgresql.org/docs/8.4/static/sql-syntax-lexical.html#SQL-BACKSLASH-TABLE

--
Victor Y. Yegorov

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

#5Alban Hertroys
haramrae@gmail.com
In reply to: Alexander Farber (#3)
Re: Referencing parts captured by round brackets in a regex in 8.4.13

On 22 March 2013 16:08, Alexander Farber <alexander.farber@gmail.com> wrote:

Thank you, this works better, but -

the result is correctly "true" now,
but the warning is still there, why?

# select 'axxxxxyz' ~ '(.)\\1\\1';
WARNING: nonstandard use of \\ in a string literal
LINE 1: select 'axxxxxyz' ~ '(.)\\1\\1';
^
HINT: Use the escape string syntax for backslashes, e.g., E'\\'.
?column?
----------
t
(1 row)

Because backslash is not normally a valid escape character in an SQL string
literal.

You can turn off the warning in your settings, or you can be explicit about
wanting a string literal that can include such escape characters by using
the E'<string>' notation.

I seem to recall that there's a string literal notation specific to regular
expressions as well (R'<regular expression>'?), but I may be mixing up
databases...

--
If you can't see the forest for the trees,
Cut the trees and you'll see there is no forest.

#6Alexander Farber
alexander.farber@gmail.com
In reply to: Alban Hertroys (#5)
Re: Referencing parts captured by round brackets in a regex in 8.4.13

Thanks, I finally get it - this works fine:

# select 'axxxxxyz' ~ E'(.)\\1\\1';
?column?
----------
t
(1 row)

# select 'ОШИБББКА' ~ E'(.)\\1\\1';
?column?
----------
t
(1 row)

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