Beefy Boxes and Bandwidth Generously Provided by pair Networks Joe
Syntactic Confectionery Delight
 
PerlMonks  

Re^3: Strange regex to test for newlines: /.*\z/

by Mutant (Priest)
on May 21, 2007 at 15:55 UTC ( #616597=note: print w/ replies, xml ) Need Help??


in reply to Re^2: Strange regex to test for newlines: /.*\z/
in thread Strange regex to test for newlines: /.*\z/

Fair enough, but try:

perl -e 'print "match\n" if "foo\n" =~ /.{0,}\z/'
AFAIK, .* and .{0,} should be exactly equivilent, but when combined with /z they are not, if the string ends in a newline.

There definitely appears to be a bug here, but it may be that the above snippet should not match, rather than the version with .* matching.


Comment on Re^3: Strange regex to test for newlines: /.*\z/
Select or Download Code
Re^4: Strange regex to test for newlines: /.*\z/
by xicheng (Sexton) on May 21, 2007 at 16:57 UTC
    hmm, Just notice that, thanks..

    I think, .* and .{0,} at the beginning of a regex pattern shold have been treated as optional, so that /.*A/ and /.{0,}A/ should be the same as /A/ which means .* and .{0,} are completely unnecessary in the above patterns..

    But \z looks behave very differently to .* and .{0,} as you mentioned.

    This looks like a Perl-related problem, PHP(use a similar regex engine) does it pretty well:
    php -r ' $str = "foo\n"; if (preg_match("/.*\z/", $str)) { print "match\n"; } ' match
    Probably it's a bug, and I am waiting for someone to make it clear. :-)

    Regards,
    Xicheng

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://616597]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others lurking in the Monastery: (13)
As of 2014-04-16 16:17 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    April first is:







    Results (432 votes), past polls