Re: Regular expression. How to disable ALL meta-character in a regular expression

Поиск
Список
Период
Сортировка
От Michael Fuhr
Тема Re: Regular expression. How to disable ALL meta-character in a regular expression
Дата
Msg-id 20050420165928.GA76076@winnie.fuhr.org
обсуждение исходный текст
Ответ на Regular expression. How to disable ALL meta-character in a regular expression  (David Gagnon <dgagnon@siunik.com>)
Список 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 по дате отправления:

Предыдущее
От: "A. Cropi"
Дата:
Сообщение: electronic-izing unicode texts
Следующее
От: Aaron Bingham
Дата:
Сообщение: Strange interaction of union and expressions