我有一个相当简单的正则表达式,但我想使用命名正则表达式使其更清晰,然后迭代结果.
测试字符串:
testing_string = "111x222b333"
Run Code Online (Sandbox Code Playgroud)
我的正则表达式:
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)
Run Code Online (Sandbox Code Playgroud)
这项工作就像一个魅力,但问题来自何处:
dimensions.each { |k, v| dimensions[k] = my_operation(v) }
# ERROR !
undefined method `each' for #<MatchData "111x222b333" width:"111" height:"222" depth:"333">.
Run Code Online (Sandbox Code Playgroud)
没有.each在MatchData对象中的方法,我真的不想修补它.
我该如何解决这个问题?
我不像我想的那么清楚:重点是保持名称和类似哈希的结构.