| From: | Karsten Hilbert <Karsten(dot)Hilbert(at)gmx(dot)net> |
|---|---|
| To: | pgsql-general <pgsql-general(at)postgresql(dot)org> |
| Subject: | Re: regex help wanted |
| Date: | 2013-04-25 14:46:12 |
| Message-ID: | 20130425144612.GJ3802@hermes.hilbert.loc |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-general |
On Thu, Apr 25, 2013 at 03:40:51PM +0100, Thom Brown wrote:
> On 25 April 2013 15:32, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
> > Karsten Hilbert <Karsten(dot)Hilbert(at)gmx(dot)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.
>
> Yeah, I think there may be an assumption that a lazy quantifier will
> stop short and cause the remainder to fail to match permanently, but
> it will backtrack, forcing the lazy quantifier to expand until it can
> match the expression.
Yup, therein lies the rub :-)
Thanks,
Karsten
--
GPG key ID E4071346 @ gpg-keyserver.de
E167 67FD A291 2BEA 73BD 4537 78B9 A9F9 E407 1346
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Tom Lane | 2013-04-25 14:59:55 | Re: regex help wanted |
| Previous Message | Karsten Hilbert | 2013-04-25 14:45:09 | Re: regex help wanted |