Skip site navigation (1) Skip section navigation (2)

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 (view raw or flat)
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

pgsql-bugs by date

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

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group