I know that the dollar sign is used to match the character at the end of the string, to make sure that search does not stop in the middle of the string but instead goes on till the end of the string.
But how does it deal with the newline character, does it match just before the new line character or does it take that into account.
I checked it in eclipse regex, for a regex matching array of strings
([A-Za-z ]+)$\n
worked, not the other way around ([A-Za-z ]+\n)$
Note that ^
and $
are zero-width
tokens. So, they don't match any character, but rather matches a position
.
^
matches the position before the first character in a string.$
matches the position before the first newline
in the string.So, the String
before the $
would of course not include the newline
, and that is why ([A-Za-z ]+\n)$
regex of yours failed, and ([A-Za-z ]+)$\n
succeeded.
In simple words, your $
should be followed by a newline
, and no other character.
If the pattern ends with a newline then $
usually matches before that character. That goes at least for Perl, PCRE, Java and .NET. (edit: as Tim Pietzker points out in a comment, \r
is not considered a line break by .NET)
This was introduced, because input that is read from a line is terminated with a newline (at least in Perl), which can be conveniently ignored this way.
Use \z
to signify the very end of the string (if it's supported by your regex engine).
Source
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With