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/ > >
signature.asc
Description: Digital signature