Причина, по которой /abc$/
соответствует как "abc\n"
, так и "abc"
, заключается в том, что $
соответствует местоположению в конце строки или (даже без модификатора /m
) позиция перед новой строкой, которая находится на конец строки.
Вам понадобится следующее регулярное выражение:
/abc\z/
, где \z
- это однозначный конец very строки, или
/abc$/D
, где модификатор /D
сделает $
так же, как \z
. См. PHP.NET :
Значение доллара можно изменить так, чтобы оно соответствовало только в самом конце строки, установив
blockquote>PCRE_DOLLAR_ENDONLY
в момент компиляции или сопоставления.См. демонстрацию regex