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