| 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:45:09 |
| Message-ID: | 20130425144509.GI3802@hermes.hilbert.loc |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-general |
On Thu, Apr 25, 2013 at 10:32:26AM -0400, Tom Lane 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.
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 ":"
The "?" should make the "+" after "[^<]" non-greedy and thus
stop at the first occurrence of ":", right ? Or am I
misunderstanding that part ?
At any rate,
select substring ('junk $<allergy::test::99>$ junk' from '\$<[^<:]+?::[^:]+?>\$');
(which follows from your hint) appears to do what I need.
Thanks,
Karsten
--
GPG key ID E4071346 @ gpg-keyserver.de
E167 67FD A291 2BEA 73BD 4537 78B9 A9F9 E407 1346
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Karsten Hilbert | 2013-04-25 14:46:12 | Re: regex help wanted |
| Previous Message | Thom Brown | 2013-04-25 14:40:51 | Re: regex help wanted |