def parse_isbn(isbn) /(\d+)-(\d+)-(\d+)-(\d+)-(\d)/ =~ isbn {prefix: $1, group: $2, publisher: $3, title: $4, check_digit: $5} end p parse_isbn("978-4-7561-3254-3") #=> {:prefix=>"978", :group=>"4", :publisher=>"7561", :title=>"3254", :check_digit=>"3"} なんか馬鹿らしい。名前と番号の対応を考えるのがめどい。 ISBN のような,単純かつ一度作ったら変更の無いようなものならいいけど,開発中に正規表現の形がコロコロ変わるようだと,$n の n を正しく変更するのが大変だ。 ※話を簡単にするため,与えられる ISBN は常に正しいと仮定している。