Re: problem with non-greedy regex match

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: "Merlin Moncure" <mmoncure(at)gmail(dot)com>
Cc: pgsql-bugs(at)postgresql(dot)org
Subject: Re: problem with non-greedy regex match
Date: 2009-01-13 20:49:37
Message-ID: 1039.1231879777@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

"Merlin Moncure" <mmoncure(at)gmail(dot)com> writes:
> I _may_ have found a problem that is affecting non-greedy regex matches.

No, you didn't read the fine print in section 9.7.3.5; particularly

A branch -- that is, an RE that has no top-level | operator -- has the
same greediness as the first quantified atom in it that has a greediness
attribute.

...

The above rules associate greediness attributes not only with individual
quantified atoms, but with branches and entire REs that contain
quantified atoms. What that means is that the matching is done in such a
way that the branch, or whole RE, matches the longest or shortest
possible substring as a whole. Once the length of the entire match is
determined, the part of it that matches any particular subexpression is
determined on the basis of the greediness attribute of that
subexpression, with subexpressions starting earlier in the RE taking
priority over ones starting later.

In short, the \s+ causes the whole thing to become greedy. Maybe \s+?
will do what you want.

regards, tom lane

In response to

Browse pgsql-bugs by date

  From Date Subject
Next Message Bruce Momjian 2009-01-14 03:24:10 Re: BUG #4612: lc_numeric setting ignored
Previous Message Merlin Moncure 2009-01-13 19:39:11 problem with non-greedy regex match