Ich habe Dein LDIF mal in Code-Tags gepackt, damit man das Leerzeichen auch tatsächlich sieht.
"^" ist der Anfang des Strings. Nur wenn man den regulären Ausdruck mit einem Flag /m versieht, matcht "^" am Anfang jeder Zeile.
Ich würde Dir aber eher empfehlen, "\n" in den Regex zu tun statt "^". Denn "\n" ist ja schließlich das Newline, welches im Endeffekt entfernt werden soll. Also im Prinzip so:
Du kannst diesen Regexp natürlich noch modifizieren, wenn Du möchtest, dass er nur nach einem "dn" matcht.