2018-07-17 19:56:59 +0800 Lauren C.:
> Hello,
> 
> I want to match:
> 
> /path/
> /path/123
> /path/abc
> 
> but /path/?xxx  should not be matched.
> 
> This works:
> 
> $ perl -le '$x="/path/abc"; print 1 if $x=~m{path/\w+}'
> 1
> 
> 
> this works too:
> 
> $ perl -le '$x="/path/?abc"; print 1 if $x=~m{path/\w+}'
> 
> 
> But it doesn't work for this case:
> 
> $ perl -le '$x="/path/"; print 1 if $x=~m{path/\w+}'

From "perlintro":

    Quantifier * : zero or more of the previous thing.
    Quantifier + : one or more of the previous thing.

So "/path/" won't match m{path/\w+} because this regex wants "one or more \w" 
at that position, which the string doesn't have. If you use m{path/\w*} (note 
the asterisk) then you're saying "zero or more \w" at that position, and it'll 
match.

> it expects 1 returned.
> 
> Can you help? thanks.
> 
> -- 
> To unsubscribe, e-mail: beginners-unsubscr...@perl.org
> For additional commands, e-mail: beginners-h...@perl.org
> http://learn.perl.org/
> 
> 

Attachment: signature.asc
Description: Digital signature

Reply via email to