¿Cuál es la diferencia entre string.match (regex) y regex.match (cadena) en Ruby? ¿Cuál es la justificación para tener ambos constructos en el lenguaje?string.match (regex) vs regex.match (cadena)
Respuesta
I THNK que, intuitivamente, match
, o el método relacionado =~
, expresa una especie de igualdad, como se refleja en el hecho de que =~
incluye la igualdad =
y las relaciones de equivalencia ~
(no en rubí, pero en matemáticas). Pero no es totalmente una relación de equivalencia, y entre los tres axiomas de igualdad (reflexividad, conmutatividad, transitividad), particularmente , la conmutatividad parece razonable para ser mantenida en esta relación; es natural que un programador espere que string.match(regex)
o string =~ regex
signifique lo mismo que regex.match(string)
o regex =~ string
. Yo mismo, tendría problemas para recordar si alguno está definido y no el otro. De hecho, algunas personas sienten extraño que el método ===
, que también nos recuerda algún tipo de igualdad, no es conmutativa, y ha planteado question s.
Además de colgar objetos diferentes (lo que a veces hace que sea más conveniente llamar a uno en lugar de al otro), son lo mismo. La justificación es que ambos son útiles y uno a veces es más conveniente que el otro.
- 1. C# Regex Regla de validación usando Regex.Match()
- 2. Regex.Match, startat y^(inicio de la cadena)
- 3. palabras completas Regex.Match
- 4. Ruby Regex vs Python Regex
- 5. Estándar Regex vs python regex discrepancia
- 6. Lua string.match usa expresiones regulares irregulares?
- 7. Regex.Match consonantes dobles en C#
- 8. regex: boost :: xpressive vs boost :: regex
- 9. Regex para obtener NÚMERO solo de la Cadena
- 10. equivalente en Java de String.match de JavaScript()
- 11. Regex para cadena contiene?
- 12. PHP: cadena para regex
- 13. Regex plus vs star difference?
- 14. Boost.Regex vs C++ 11 Regex
- 15. Python - REGEX único vs multilínea
- 16. Regex string match?
- 17. Regex muy simple no funciona
- 18. Cadena vs cadena
- 19. Cadena vs cadena
- 20. cada partido RegEx en cadena
- 21. regex: cadena con partes opcionales
- 22. Coincidir cadena dinámica usando regex
- 23. extracción cadena de C# RegEx
- 24. Devolver la primera coincidencia de Ruby regex
- 25. C++ 11 regex: comprobando si la cadena comienza con regex
- 26. Acceso de Microsoft Office `LIKE` VS` RegEx`
- 27. Reemplazo más rápido para Regex
- 28. .NET Regex Lookbehind Not Greedy
- 29. Notepad ++ inverso Regex reemplazar (todos excepto cadena)
- 30. Regex no igual a la cadena
No me gusta esa justificación (probablemente no haya una mejor que "están allí, así que vive con ella"). Ambos son útiles porque ambos tienen el * mismo * uso. Se puede argumentar que la existencia de uno hace que el otro sea inútil. –
Excepto que no tienen el mismo uso. Simplemente tienen usos muy similares. En cualquier caso, no estoy convencido de que requieran justificación. Si realmente desea una característica de lenguaje de Ruby que necesita justificación (y carece de ella), busque 'for ... in ...' loops. –
¿Entonces no son lo mismo? ¿Puedes mejorar tu respuesta para reflejar eso? –