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
In reply to Re: How Greedy is Greedy: A Regex Question
by tachyon
in thread How Greedy is Greedy: A Regex Question
by dsb
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |