Actualmente estoy tratando de volver a convertir una cadena en varias variables. Ejemplo cadena:
Ruby Regexp group matching, asigne variables en 1 línea
ryan_string = "RyanOnRails: This is a test"
he emparejado con esta expresión regular, con 3 grupos:
ryan_group = ryan_string.scan(/(^.*)(:)(.*)/i)
ahora para acceder a cada grupo que tengo que hacer algo como esto:
ryan_group[0][0] (first group) RyanOnRails
ryan_group[0][1] (second group) :
ryan_group[0][2] (third group) This is a test
Esto parece bastante ridículo y parece que estoy haciendo algo mal. Sería capaz de hacer algo como esto:
g1, g2, g3 = ryan_string.scan(/(^.*)(:)(.*)/i)
¿Esto es posible? ¿O hay una forma mejor que cómo lo estoy haciendo?
Ten en cuenta que si no se encuentran coincidencias, los rendimientos de los partidos nil y se obtiene una NilError. Si se encuentra en los carriles, sugiero que cambie: 'uno, dos, tres = String.match (/(^.*)(:)(.*)/ i) .captures' en: 'uno, dos, tres = String.match (/(^.*)(:)(.*)/ i) .try (: capturas)' –
@AndreaSalicetti que he editado mi post, no estoy añadiendo código específico de Rails, así que lo he alterado con una versión para manejar el objeto nil devuelto –
Limpio y ordenado, ¡está bien! –