Re: regex help wanted - Mailing list pgsql-general

From Jasen Betts
Subject Re: regex help wanted
Date
Msg-id kli9oq$odq$1@gonzo.reversiblemaps.ath.cx
Whole thread Raw
In response to regex help wanted  (Karsten Hilbert <Karsten.Hilbert@gmx.net>)
Responses Re: regex help wanted
List pgsql-general
On 2013-04-25, Karsten Hilbert <Karsten.Hilbert@gmx.net> wrote:
> On Thu, Apr 25, 2013 at 10:32:26AM -0400, Tom Lane wrote:
>
>> Karsten Hilbert <Karsten.Hilbert@gmx.net> writes:
>> > What I don't understand is: Why does the following return a
>> > substring ?
>>
>> >     select substring ('junk $<allergy::test::99>$ junk' from '\$<[^<]+?::[^:]+?>\$');
>>
>> There's a perfectly valid match in which [^<]+? matches allergy::test
>> and [^:]+? matches 99.
>
> Tom, thanks for helping !
>
> I would have thought "<[^<]+?:" should mean:
>
>     match a "<"
>     followed by 1-n characters as long as they are not "<"
>     until the VERY NEXT ":"


if you want that say:  "<[^<:]+:"

> The "?" should make the "+" after "[^<]" non-greedy and thus
> stop at the first occurrence of ":", right ?  Or am I
> misunderstanding that part ?

From "the fine manual"

 Non-greedy quantifiers (available in AREs only) match the same
 possibilities as their corresponding normal (greedy) counterparts, but
 prefer the smallest number rather than the largest number of matches.
 See Section 9.7.3.5 for more detail.



--
⚂⚃ 100% natural

pgsql-general by date:

Previous
From: Jasen Betts
Date:
Subject: Re: Optimizing bulk update performance
Next
From: Bob Futrelle
Date:
Subject: pgAdmin shows two servers with the identical data