Hace un tiempo respondí this question en SO, pero todavía no entiendo por qué mi respuesta funcionó.¿Por qué (?! ^) Es equivalente a (? <! ^)?
Por alguna razón, una anticipación negativa para el inicio de una cadena se comporta igual que una mirada negativa detrás.
Por ejemplo, en PHP
preg_replace("/(?!^)12/", "ab", "12345"); // 12345
preg_replace("/(?<!^)12/", "ab", "12345"); // 12345
preg_replace("/(?!1)23/", "ab", "12345"); // 1ab45
preg_replace("/(?<!1)23/", "ab", "12345"); // 12345
Yo sé que no es la cuestión más útil preguntado alguna vez, pero esto me ha sido REGAÑA durante un par de semanas.
Gracias, ese tipo de sentido, pero creo que necesito una noche de descanso para dejar que se hunda. –