私はかなり単純な正規表現を持っていますが、名前付き正規表現を使用してそれをよりクリーンにし、結果を反復処理したいと考えていました。
テスト文字列:
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 オブジェクトのメソッドであり、モンキー パッチを適用したくありません。
この問題を解決するにはどうすればよいですか?
思ったほど明確ではありませんでした。要点は、名前とハッシュのような構造を維持することです。