He simplificado los ejemplos. Digamos que tengo una cadena que contiene el código para una expresión regular. Me gustaría que la expresión regular para que coincida con un punto literal y por lo tanto yo quiero que sea:Ruby Regexp: diferencia entre new y union con una sola expresión regular
\.
lo tanto, crear la siguiente cadena Ruby:
"\\."
Sin embargo cuando lo uso con Regexp.union a crear mi expresión regular, me sale esto:
irb(main):017:0> Regexp.union("\\.")
=> /\\\./
que coincidirá con una barra seguido de un punto, no sólo un único punto. Compare el resultado anterior con este:
irb(main):018:0> Regexp.new("\\.")
=> /\./
que proporciona el Regexp que quiero pero sin la unión necesaria.
¿Podría explicar por qué Ruby actúa así y cómo hacer la unión correcta de expresiones regulares? El contexto de utilización es el de importar cadenas JSON que describen expresiones regulares y unirlas en Ruby.