Should be fixed now. Please try.
CL-USER> (cl-ppcre:regex-replace-all (cl-ppcre:create-scanner "^$" :multi-line-mode t) *str* "!")
It's shorter to write
(cl-ppcre:regex-replace-all "(?m)^$" *str* "!")
instead. This will also allow the compiler macro to compile the regex at load time.
Cheers, Edi.