quantifier minimizer

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • yawnmoth

    #1

    quantifier minimizer

    The ? symbol serves a number of purposes in PCRE. The quantifer
    minimizer usage is the one I'm currious about. Specifically, the
    output from a test script isn't what I'm expecting, and I'm wondering
    why.

    Here's the script:

    <?
    echo preg_replace('# .*?b#','','aabb c');
    ?>

    Based on my understanding of the quantifer minimizer, the output should
    be bc. However, running this results in c being outputted. As such, I
    guess I'm just not understanding what ? as a quantifer minimizer is
    supposed to do. Could someone explain it to me?

  • John Dunlop

    #2
    Re: quantifier minimizer

    yawnmoth wrote:
    [color=blue]
    > <?
    > echo preg_replace('# .*?b#','','aabb c');
    > ?>
    >
    > Based on my understanding of the quantifer minimizer, the output should
    > be bc. However, running this results in c being outputted.[/color]

    Your understanding of <?> is probably spot on but you've just
    overlooked the Kleene Star. There's in fact two replacements
    here. The first is the one you expected, the replacement of
    <aab> with the empty string. The second is the replacement of
    <b> - the second <b>. The quantifier <*> means zero or more;
    and so in the second replacement, <.*> matches nothing while
    the <b> matches.

    --
    Jock

    Comment

    Working...