in reply to How Greedy is Greedy: A Regex Question

You are correct the x* modifier means as much of x as possible to make a match. x*? means as little of x as possible including no x at all. It is similar for x+ and x+? except x+? must have at least one x. See perlman:perlre for more details. Here is a relevant chunk:

The following standard quantifiers are recognized: 


    *      Match 0 or more times
    +      Match 1 or more times
    ?      Match 1 or 0 times
    {n}    Match exactly n times
    {n,}   Match at least n times
    {n,m}  Match at least n but not more than m times

(If a curly bracket occurs in any other context, it is
treated as a regular character.) The ``*'' modifier is
equivalent to {0,}, the ``+'' modifier to {1,}, and the
 ``?'' modifier to {0,1}. n and m are limited to integral
values less than 65536. 

By default, a quantified subpattern is ``greedy'', that is,
it will match as many times as possible (given a particular
starting location) while still allowing the rest of the
pattern to match. If you want it to match the minimum
number of times possible, follow the quantifier with a
``?''. Note that the meanings don't change, just the
``greediness'': 


    *?     Match 0 or more times
    +?     Match 1 or more times
    ??     Match 0 or 1 time
    {n}?   Match exactly n times
    {n,}?  Match at least n times
    {n,m}? Match at least n but not more than m times


cheers

tachyon

s&&rsenoyhcatreve&&&s&n\w+t&"$'$`$\"$\&"&ee&&y&srve&&d&&print

  • Comment on Re: How Greedy is Greedy: A Regex Question