Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

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

by xicheng (Sexton)
on May 22, 2007 at 18:17 UTC ( #616824=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/

$ and \Z work pretty much the same in normal mode, both match the end of search string or before a string-ending newline. the difference between them lies in the multiline mode when you issue an 'm' modifier.

\z means the real end of string even after the string-ending newline.

If you use an 's' modifier, then things become more different but that's mainly coz of the '.' which changes its behaviors, not the three end-of-string anchors..

check the following snippets:
perl -e 'print "match\n" if "foo\n" =~ /.+$/' # ok # perl -e 'print "match\n" if "foo\n" =~ /.+\z/' perl -e 'print "match\n" if "foo\n" =~ /.+\Z/' # ok # perl -e 'print "match\n" if "foo\n\n\n" =~ /.+\Z/' perl -e 'print "match\n" if "foo\n\n\n" =~ /.+\z/' perl -e 'print "match\n" if "foo\n\n\n" =~ /.+$/' perl -e 'print "match\n" if "foo\n\n\n" =~ /.+$/m' # ok # perl -e 'print "match\n" if "foo\n\n\n" =~ /.+\z/m' perl -e 'print "match\n" if "foo\n\n\n" =~ /.+\Z/m' perl -e 'print "match\n" if "foo\n\n\n" =~ /.+\Z/s' # ok # perl -e 'print "match\n" if "foo\n\n\n" =~ /.+\z/s' # ok # perl -e 'print "match\n" if "foo\n\n\n" =~ /.+$/s' # ok #
BTW. When comparing between \z, \Z and $, it's probably better to avoid using .* or .? quanifiers the ways in your examples.

BTW. my previous statement about \Z had some error and I have updated that post.

Regards,
Xicheng

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://616824]
help
Chatterbox?
[stevieb]: well, what happens is the Arduino 'listens' for requests r/w, and does the appropriate thing when it's interrupted based on the 'register' address sent in. It's ugly as it was my first attempt, but I've got great new ideas I'm just sitting.
[stevieb]: ...down to implement now. Here's the sketch as it currently sits
[shmem]: well I use I2C and SPI and stuff, but creating a pseudo chip looks to me like lot of indirection and memory clutter... not?
[choroba]: Are you going to use the device soon? Related to your comment about "not having much time to do a lot of coding"...
[stevieb]: sure, but I'm just learning ;) I consider it practice to get a good understanding of what goes on *after* an I2C/SPI request is made
[shmem]: ah ok. Gonna read that. but now....
shmem compiles himself into his template
[stevieb]: this is my RPi:: distribution overall automation build system physical layout. It doesn't encompass all of my RPi dists yet, ...
[stevieb]: ...but I'm getting close. I've been soldering my own PCBs to gain that experience as well, before I have my own manufactured.
[stevieb]: heh, nice *template* ;) 'night shmem!

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (6)
As of 2017-06-25 22:48 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    How many monitors do you use while coding?















    Results (572 votes). Check out past polls.