Re: back references using regex

From: Douglas McNaught <doug(at)mcnaught(dot)org>
To: Matthew Peter <survivedsushi(at)yahoo(dot)com>
Cc: Michael Fuhr <mike(at)fuhr(dot)org>, pgsql-general(at)postgresql(dot)org
Subject: Re: back references using regex
Date: 2005-09-10 12:21:53
Message-ID: m2slwdcdum.fsf@Douglas-McNaughts-Powerbook.local
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Matthew Peter <survivedsushi(at)yahoo(dot)com> writes:

> One other thing, when I wrote back I actually used
> 34.31.29.20 (random), not 12.00.00.34 like i showed in
> the example, which is why i said it didn't work on
> digits.
>
> SELECT substring('34.31.29.20' FROM $$((\w+)\.\2)$$);
> substring
> -----------
>
> (1 row)
>
> little did i know writing it with 12.00.00.34 would
> return 00.00... so yes, that did suprise me.
> Apparently only using the identical values returns a
> value. so it's saying x+ one more of the same value
> separated by a period... where shouldn't it be any
> "letter, number or underscore" followed by any
> "letter, number or underscore"?

Backreferences match the exact string matched by the corresponding set
of parentheses. It's not the equivalent of substituting in the
parenthesized part of the regex and testing that for a match. The
behavior above is as expected. If you want it as "any followed by
any" you shold write the regex as '((\w+)\.(\w+))' -- then the two
parts can differ.

-Doug

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Mike Rylander 2005-09-10 12:30:28 Re: to_ascii, or some other form of magic transliteration
Previous Message Bruno Wolff III 2005-09-10 11:14:51 Re: Postgresql Hosting