Thanks Gil. I think i know the difference of "\w+" and "\w*" now.


Gil Magno 写道:
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/



--
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to