Tengo una expresión regular bastante simple, pero quería usar expresiones regulares con nombre para que sea más clara y luego repetir los resultados.Convertir coincidencias con nombre en MatchData a hash
sarta de pruebas:
testing_string = "111x222b333"
Mi expresión regular:
regexp = %r{
(?<width> [0-9]{3}) {0}
(?<height> [0-9]{3}) {0}
(?<depth> [0-9]+) {0}
\g<width>x\g<height>b\g<depth>
}x
dimensions = regexp.match(testing_string)
Este trabajo como un encanto, pero aquí está donde viene el problema:
dimensions.each { |k, v| dimensions[k] = my_operation(v) }
# ERROR !
undefined method `each' for #<MatchData "111x222b333" width:"111" height:"222" depth:"333">.
No hay. each
método en el objeto MatchData, y realmente no quiero parchearlo.
¿Cómo puedo solucionar este problema?
No estaba tan claro como pensaba: el punto es guardar los nombres y la estructura tipo hash.
Por favor, sea más claro la próxima vez. De lo contrario, respondedores como yo serán votados negativamente después de la aclaración :) – mmdemirbas