Вы путаете две очень похожие вещи.$
соответствует в конце строки, если /m
не используется, и в конце строки или в конце строки, за исключением последнего перевода строкиесли /m
используется.Однако на самом деле не соответствует (потребляет) саму новую строку.Вы все еще можете сопоставить сам символ новой строки с чем-то другим в регулярном выражении, например \n
;или, если вы также используете /s
, то /blah$./sm
теоретически будет соответствовать "бла \ n", даже если $
не является последним в регулярном выражении.
(Причина, по которой это не такна самом деле работа заключается в том, что и $.
, и $\
фактически интерпретируются как специальные переменные, а не как $
плюс .
, так что на самом деле довольно сложно поместить что-то после $
в регулярное выражениене так ли?)