Re: Regular expression. How to disable ALL meta-character in a regular expression - Mailing list pgsql-general

From Michael Fuhr
Subject Re: Regular expression. How to disable ALL meta-character in a regular expression
Date
Msg-id 20050420165928.GA76076@winnie.fuhr.org
Whole thread Raw
In response to Regular expression. How to disable ALL meta-character in a regular expression  (David Gagnon <dgagnon@siunik.com>)
List pgsql-general
On Wed, Apr 20, 2005 at 11:28:28AM -0400, David Gagnon wrote:
>
> I have a web interface with offers a search field.  This search field
> will look for the string X in 12 different columns.  If the string is
> found anywhere I return the row.
>
> The problem is that the user is eable to put spacial character like : [*
> This create invalid regular expression and make my sql crash.
> ICNUM~* #descriptionOrKeyword#
>
> Is there a way to disable all meta-character.

Why are you doing a regular expression search if you don't want to
allow regular expressions?

> I found this in the manual .. but haven't found example :-(:
> : ....with ***=, the rest of the RE is taken to be a literal string,
> with all characters considered ordinary characters.

Read again the entire sentence, especially the first few words:

  If an RE begins with ***=, the rest of the RE is taken to be a
  literal string, with all characters considered ordinary characters.

Here are some examples:

SELECT 'test string' ~ 'test[*';
ERROR:  invalid regular expression: brackets [] not balanced

SELECT 'test string' ~ '***=test[*';
 ?column?
----------
 f
(1 row)

SELECT 'test[* string' ~ '***=test[*';
 ?column?
----------
 t
(1 row)

--
Michael Fuhr
http://www.fuhr.org/~mfuhr/

pgsql-general by date:

Previous
From: "A. Cropi"
Date:
Subject: electronic-izing unicode texts
Next
From: Aaron Bingham
Date:
Subject: Strange interaction of union and expressions