acabo de escribieron una expresión regular para su uso con la función php preg_match
que contiene la siguiente parte:¿Qué caracteres literales deberían escaparse en una expresión regular?
[\w-.]
para que coincida con cualquier carácter de palabra, así como un signo menos y el punto. Si bien parece funcionar en preg_match, traté de ponerlo en una utilidad llamada Reggy y se queja sobre "Rango vacío en la clase de caracteres". Ensayo y error me enseñaron que este problema fue resuelto por escapar del signo menos, convirtiendo la expresión regular en
[\w\-.]
Puesto que el original parece funcionar en PHP, me pregunto por qué debería o no debería estar escapando el signo menos y, dado que el punto también es un personaje con un significado en PHP, por qué no necesitaría escapar del punto. ¿La utilidad que uso es simplemente tonta, está funcionando con otro dialecto de expresiones regulares o es incorrecto mi expresión regular y tengo suerte de que preg_match me permita salir con la suya?
¿Hay alguna razón para no usar 'preg_quote'? – Okonomiyaki3000
Probablemente no. Pero esa no es la razón por la que hice la pregunta. Estaba tratando de aprender algo nuevo sobre expresiones regulares, simplemente usar 'preg_quote' tendría exactamente el efecto opuesto. :). Me doy cuenta de que etiqueté este PHP, pero estaba buscando una respuesta que pueda aplicarse a cualquier implementación de PCRE. –
Ya veo. Entonces, puedo sugerir: https://github.com/php/php-src/blob/a3ca6b09cdf1ed904d3e3a56878c1cf6b1a04d1b/ext/pcre/php_pcre.c – Okonomiyaki3000