¿Cómo gestiona preg_match el delimitador cuando se usa \ Q .. \ E?
Estoy jugando con expresiones regulares y probé la secuencia de escape \ Q .. \ E.
Primer intento:
$regex = '/\Q http:// \E/';
var_dump(preg_match($regex, ' http:// '));
Me dice que '\' es un modificador desconocido, completamente comprensible.
Segundo intento:
$regex = '/\Q http:\/\/ \E/';
var_dump(preg_match($regex, ' http:// '));
var_dump(preg_match($regex, ' http:\/\/ '));
Se ejecuta, no coincide con la primera cadena, pero coincide con la segunda.
Sé que podría usar otro carácter delimitador o resolverlo sin \ Q .. \ E, pero tengo curiosidad por saber cómo funciona.
A través de eso, al principio, separa la expresión regular de los modificadores por el delimitador (con el manejo del escape si es necesario) y después el motor de expresión regular interpreta el \ Q .. \ E, pero parece que cuando el \ Q interviene, entonces no maneja el delimitador escapado de la misma manera.
¿Qué pasa exactamente en este caso?
¡Gracias!