¿Por qué las expresiones regulares de PHP tienen los delimitadores circundantes? Parece que sería más claro si se pasara algún modificador de patrón como parámetro a cualquier función que se estuviera usando.delimitador de expresiones regulares de PHP, ¿cuál es el punto?
Respuesta
No hay ninguna razón técnica por la que tenga que ser así.
Como se señala en un comentario, la biblioteca subyacente no requiere que las banderas se pasen como parte de la expresión regular - de hecho, la extensión tiene que quitarlas y pasarlas como un argumento separado.
Parece que el implementador original intentaba hacer que se viera como grep/sed/awk/perl/etc, por lo que es más familiar para los programadores que provienen de esas herramientas.
El motivo del delimitador es poner banderas después del patrón. Podría decirse que las banderas podrían pasarse como un parámetro separado (Java puede hacerlo de esta manera) pero así es como Perl lo hizo originalmente (y sed/awk/vi antes), así es como se hace ahora.
No utilice barras diagonales: son demasiado comunes. Personalmente, casi siempre uso el! personaje. Casi nunca estoy buscando eso.
Nota: Java también puede incluir indicadores dentro de la expresión regular, al principio (? M) para varias líneas, por ejemplo. (? s) para dotall, (? ms) para ambos, y así sucesivamente. – VonC
@VonC, también lo puede hacer Python. –
También lo pueden hacer Perl, PCRE e incluso las funciones de preg de PHP. Pero las funciones de preg tienen algunos indicadores adicionales que solo se pueden especificar después de la expresión regular. –
No sé cuáles fueron los motivos de los desarrolladores de las funciones de preg. La única razón por la que puedo pensar es que trataron un poco demasiado duro para hacer las cosas al estilo Perl.
Mientras que los delimitadores permiten especificar indicadores junto con la expresión regular como un parámetro, especificar los indicadores como un parámetro separado es mucho más claro. Así es como cada otra biblioteca de expresiones regulares (para lenguajes que no admiten expresiones regulares literales como característica de idioma) sé que lo hace, incluida la biblioteca PCRE en la que se basan las funciones de preg de PHP. El código de preg de hecho tiene que pasar por la dificultad de eliminar los delimitadores de expresiones regulares de la cadena con su expresión regular antes de que pueda pasar a PCRE.
- 1. Expresiones regulares de PHP: Ningún delimitador final '^' se encuentra en
- 2. Cambiar el delimitador de expresiones regulares en los patrones awk
- 3. ¿Cuál es el efecto de "*" en expresiones regulares?
- 4. ¿Cuál es el poder de las expresiones regulares?
- 5. Javascript: ¿cuál es el punto de RegExp.compile()?
- 6. ¿Cuál es más eficiente, funciones de cadena PHP o expresiones regulares en PHP?
- 7. Compilador de expresiones regulares
- 8. Escapar punto en un rango de expresiones regulares
- 9. números de expresiones regulares a juego con punto flotante
- 10. Expresiones regulares en J2ME
- 11. ¿Cuál es el punto de las interfaces en PHP?
- 12. Expresiones regulares Para el nombre de skype en PHP
- 13. Un analizador para expresiones regulares en PHP?
- 14. ¿Composición de expresiones regulares?
- 15. Partido hasta x expresiones regulares o y expresiones regulares
- 16. Intersección de dos expresiones regulares
- 17. Limitaciones de expresiones regulares?
- 18. de expresiones regulares negativo
- 19. PHP de expresiones regulares - Repetición del partido de un grupo
- 20. ¿Cuál es el patrón de expresiones regulares para grupos de captura nombrados en .NET?
- 21. ¿Cuál es el número máximo de capturas de expresiones regulares numeradas?
- 22. expresiones regulares en PHP: Coincidencia con el UTS18 estándar
- 23. Comprobación de extensiones de archivos en PHP con expresiones regulares
- 24. JABÓN - ¿Cuál es el punto?
- 25. HashMap.containsValue - ¿Cuál es el punto?
- 26. ¿Es posible tener expresiones regulares que coincidan con todas las expresiones regulares válidas?
- 27. Validar expresiones matemáticas usando expresiones regulares?
- 28. Uso de expresiones regulares en JSP EL
- 29. Doble interpolación de expresiones regulares en Perl
- 30. Capturar letras de repetición en PHP - Expresiones regulares
PCRE no permite los delimitadores circundantes en absoluto. Las funciones de preg de PHP las quitan antes de pasarlas a la biblioteca PCRE. –
wow, ¿entonces todo es puro intento de ser perl? He perdonado la sintaxis durante años, pero ahora soy libre de odiarlo de verdad. ¡Gracias! – Cal
Esta respuesta está bien para la opinión personal, pero no es correcta. – dreftymac