I use a regex pattern i preg_match php function. The pattern is let's say '/abc$/'
. It matches both strings:
'abc'
and
'abc
'
The second one has the line break at its end. What would be the pattern that matches only this first string?
'abc'
The reason why /abc$/
matches both "abc\n"
and "abc"
is that $
matches the location at the end of the string, or (even without /m
modifier) the position before the newline that is at the end of the string.
You need the following regex:
/abc\z/
where \z
is the unambiguous very end of the string, or
/abc$/D
where the /D
modifier will make $
behave the same way as \z
. See PHP.NET:
The meaning of dollar can be changed so that it matches only at the very end of the string, by setting the PCRE_DOLLAR_ENDONLY
option at compile or matching time.
See the regex demo