Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

名前付きキャプチャを使って、正規表現の結果をHash気分で扱う

Rubyにはperlと同様、名前付きキャプチャがあります。

キャプチャ

(?pat)もしくは(?'name'pat)で書き下します。

"ブリドカットセーラ 恵美".match(/(?<family_name>\S+)[ |\s]+(?<given_name>\S+)/)
#=> #<MatchData "ブリドカットセーラ 恵美" family_name:"ブリドカットセーラ" given_name:"恵美">

"上坂   すみれ".match(/(?<family_name>\S+)[ |\s]+(?<given_name>\S+)/)
#=> #<MatchData "上坂   すみれ" family_name:"上坂" given_name:"すみれ">

呼び出し

hashと同じ感じです。

 "上坂   すみれ".match(/(?<family_name>\S+)[ |\s]+(?<given_name>\S+)/).tap {|i| puts "同志" << i[:family_name] }
m = "上坂   すみれ".match(/(?<family_name>\S+)[ |\s]+(?<given_name>\S+)/)
#=> #<MatchData "上坂   すみれ" family_name:"上坂" given_name:"すみれ">

m[:family_name]
#=> "上坂"

参考もと