Обсуждение: How can i escape a '+' or a '+' in a regexp ?

Поиск
Список
Период
Сортировка

How can i escape a '+' or a '+' in a regexp ?

От
Gabriel Fernandez
Дата:
Hi fellows,

I'm trying to the following query:

select * from areas where titulo ~ '+'  or titulo ~ '*'

and the answer is:

ERROR:  regcomp failed with error repetition-operator operand invalid

I have tried to escape the '+' and the '*'  with a backslash, as
follows:

select * from areas where titulo ~ '\+'  or titulo ~ '\*'but the answer is the same.

If I use the LIKE operator, then I have the problem with '%' and '_'
:-)

As long as the values in the field can contain either '+' or '*' or '%'
or '_'  I need to escape these characters. How can i do it ?

I'm using PostgreSQL 6.5.3 on Linux Red Hat 6.2.

Thanks,

Gabi :-)






Re: How can i escape a '+' or a '+' in a regexp ?

От
Stephan Szabo
Дата:
I believe you'll need two \ characters to escape the + or *.
titulo ~ '\\+'

On Fri, 23 Feb 2001, Gabriel Fernandez wrote:

> Hi fellows,
> 
> I'm trying to the following query:
> 
> select * from areas where titulo ~ '+'  or titulo ~ '*'
> 
> and the answer is:
> 
> ERROR:  regcomp failed with error repetition-operator operand invalid
> 
> I have tried to escape the '+' and the '*'  with a backslash, as
> follows:
> 
> select * from areas where titulo ~ '\+'  or titulo ~ '\*'
>  but the answer is the same.
> 
> If I use the LIKE operator, then I have the problem with '%' and '_'
> :-)
> 
> As long as the values in the field can contain either '+' or '*' or '%'
> or '_'  I need to escape these characters. How can i do it ?



Re: How can i escape a '+' or a '+' in a regexp ?

От
Jie Liang
Дата:
select field from table
where field like '%\\%%' or field like '%*%';

select field from table
where field ~ '.*\\*.*' or ~ '.*%.*';

Jie LIANG

St. Bernard Software
Internet Products Inc.

10350 Science Center Drive
Suite 100, San Diego, CA 92121
Office:(858)320-4873

jliang@ipinc.com
www.stbernard.com
www.ipinc.com

On Fri, 23 Feb 2001, Gabriel Fernandez wrote:

> Hi fellows,
> 
> I'm trying to the following query:
> 
> select * from areas where titulo ~ '+'  or titulo ~ '*'
> 
> and the answer is:
> 
> ERROR:  regcomp failed with error repetition-operator operand invalid
> 
> I have tried to escape the '+' and the '*'  with a backslash, as
> follows:
> 
> select * from areas where titulo ~ '\+'  or titulo ~ '\*'
>  but the answer is the same.
> 
> If I use the LIKE operator, then I have the problem with '%' and '_'
> :-)
> 
> As long as the values in the field can contain either '+' or '*' or '%'
> or '_'  I need to escape these characters. How can i do it ?
> 
> I'm using PostgreSQL 6.5.3 on Linux Red Hat 6.2.
> 
> Thanks,
> 
> Gabi :-)
> 
> 
> 
> 



Re: How can i escape a '+' or a '+' in a regexp ?

От
"tjk@tksoft.com"
Дата:
Gabriel,


Two backslashes.

> select * from areas where titulo ~ '\\+'  or titulo ~ '\\*'


Troy

> 
> Hi fellows,
> 
> I'm trying to the following query:
> 
> select * from areas where titulo ~ '+'  or titulo ~ '*'
> 
> and the answer is:
> 
> ERROR:  regcomp failed with error repetition-operator operand invalid
> 
> I have tried to escape the '+' and the '*'  with a backslash, as
> follows:
> 
> select * from areas where titulo ~ '\+'  or titulo ~ '\*'
>  but the answer is the same.
> 
> If I use the LIKE operator, then I have the problem with '%' and '_'
> :-)
> 
> As long as the values in the field can contain either '+' or '*' or '%'
> or '_'  I need to escape these characters. How can i do it ?
> 
> I'm using PostgreSQL 6.5.3 on Linux Red Hat 6.2.
> 
> Thanks,
> 
> Gabi :-)
> 
> 
> 
> 
>