Ruby 正規表現と置換
こんにちは。
Rubyで正規表現で見つかった箇所の文字列を置換するプログラムを書いているのですが、
一部うまく作動せず、その原因が分からないため質問させていただきました。
以下プログラムの置換の部分になります。
49 case text
50 when /株式数(株)\t貸借対照表計上額(千円)|株式数(株)\t貸借対照表計上額(千円)/
51 text.gsub!(/([1-9]\d{0,2}(,\d{3})*)\t([1-9]\d{0,2}(,\d{3})*)\t/) {|s| "#{$1}株\t#{$3},000円\t"}
52 text.gsub!(/([1-9]\d{0,3})\t(\d{1})/){|s| "#{$1}株\t#{$2}円\t"}
53 text.gsub!(/([1-9]\d{0,2}(,\d{3})*)\t(\d{1})/){|s| "#{$1}株\t#{$3}円\t"}
54 when/百万円/
55 text.gsub!(/([1-9]\d{0,2}(,\d{3})*)\t([1-9]\d{0,2}(,\d{3})*)/) {|s| "#{$1}株\t#{$3},000,000円\t"}
56 text.gsub!(/([1-9]\d{0,3})\t(\d{1})/){|s| "#{$1}株\t#{$2}円\t"}
57 when /株式数(株)\t貸借対照表計上額(百万円)/
58 text.gsub!(/([1-9]\d{0,2}(,\d{3})*)\t([1-9]\d{0,2}(,\d{3})*)/) {|s| "#{$1}株\t#{$3},000,000円\t"}
59 text.gsub!(/([1-9]\d{0,3})\t(\d{1})/){|s| "#{$1}株\t#{$2}円\t"}
60 when /株式数(株)\t貸借対照表計上額(百万円)/
61 text.gsub!(/([1-9]\d{0,2}(,\d{3})*)\t([1-9]\d{0,2}(,\d{3})*)\t/) {|s| "#{$1}株\t#{$3},000,000円\t"}
62 text.gsub!(/([1-9]\d{0,3})\t(\d{1})/){|s| "#{$1}株\t#{$2}円\t"}
63 when /株式数(1000株)\t貸借対照表計上額(百万円)/
64 text.gsub!(/([1-9]\d{0,2}(,\d{3})*)\t([1-9]\d{0,2}(,\d{3})*)\t/) {|s| "#{$1},000株\t#{$3},000,000円\t"}
65 text.gsub!(/([1-9]\d{0,3})\t(\d{1})/){|s| "#{$1}株\t#{$2}円\t"}
66 when /株式数(1000株)\t貸借対照表計上額(百万円)/
67 text.gsub!(/([1-9]\d{0,2}(,\d{3})*)\t([1-9]\d{0,2}(,\d{3})*)\t/) {|s| "#{$1},000株\t#{$3},000,000円\t"}
68 text.gsub!(/([1-9]\d{0,3})\t(\d{1})/){|s| "#{$1}株\t#{$2}円\t"}
69 when/株式数(1000株)\t貸借対照表計上額(百万円)/
70 text.gsub!(/([1-9]\d{0,2}(,\d{3})*)\t([1-9]\d{0,2}(,\d{3})*)\t/) {|s| "#{$1},000株\t#{$3},000,000円\t"}
71 text.gsub!(/([1-9]\d{0,3})\t(\d{1})/){|s| "#{$1}株\t#{$2}円\t"}
72 when/株式数(1000株)\t貸借対照表計上額(百万円)/
73 text.gsub!(/([1-9]\d{0,2}(,\d{3})*)\t([1-9]\d{0,2}(,\d{3})*)\t/) {|s| "#{$1},000株\t#{$3},000,000円\t"}
74 text.gsub!(/([1-9]\d{0,3})\t(\d{1})/){|s| "#{$1}株\t#{$2}円\t"}
75 when/株式数(株) 貸借対照表計上額(百万円)/
76 text.gsub!(/([1-9]\d{0,2}(,\d{3})*)\t([1-9]\d{0,2}(,\d{3})*)\t/) {|s| "#{$1},株\t#{$3},000,000円\t"}
77 text.gsub!(/([1-9]\d{0,3})\t(\d{1})/){|s| "#{$1}株\t#{$2}円\t"}
78 when/株式数(株) 貸借対照表計上額(百万円)/
79 text.gsub!(/([1-9]\d{0,2}(,\d{3})*)\t([1-9]\d{0,2}(,\d{3})*)\t/) {|s| "#{$1},株\t#{$3},000,000円\t"}
80 text.gsub!(/([1-9]\d{0,3})\t(\d{1})/){|s| "#{$1}株\t#{$2}円\t"}
81 end
以下は今のプログラムで出てくる結果です。
1つ目の数字の後ろに「株」、2つ目の数字の後ろに「,000円」がついています。
ハ保有目的が純投資目的である投資株式の前事業年度及び当事業年度における貸借対照表計上額の合計額並びに当事業年度における受取配当金、売却損益及び評価損益の合計額(a)保有目的が純投資目的以外の目的である投資株式銘柄数58銘柄貸借対照表計上額の合計額6,915百万円(b)保有目的が純投資目的以外の目的である投資株式の保有区分、銘柄、株式数、貸借対照表計上額および保有目的(前事業年度)特定投資株式
前事業年度 銘 柄 株式数(株) 貸借対照表計上額(百万円) 保有目的
(株)髙島屋 1,594,657株 1,527,000円 事業上の関係の維持・強化
トヨタ自動車(株) 220,804株 1,327,000円 事業上の関係の維持・強化
(株)みずほフィナンシャルグループ 3,295,570株 642,000円 取引銀行との関係の維持・強化
ヒューリック(株) 638,400株 552,000円 事業上の関係の維持・強化
住友商事(株) 229,198株 294,000円 事業上の関係の維持・強化
(株)三菱UFJフィナンシャル・グループ 457,750株 272,000円 取引銀行との関係の維持・強化
阪急阪神ホールディングス(株) 316,400株 170,000円 事業上の関係の維持・強化
(株)クラレ 86,250株 125,000円 事業上の関係の維持・強化
積水ハウス(株) 90,950株 120,000円 事業上の関係の維持・強化
東海旅客鉄道(株) 10,000株 112,000円 事業上の関係の維持・強化
(株)池田泉州ホールディングス 206,963株 102,000円 取引銀行との関係の維持・強化
帝人(株) 425,000株 99,000円 事業上の関係の維持・強化
東レ(株) 140,000株 98,000円 事業上の関係の維持・強化
(株)滋賀銀行 181,020株 96,000円 取引銀行との関係の維持・強化
ダイニック(株) 459,000株 81,000円 事業上の関係の維持・強化
三井住友トラスト・ホールディングス(株) 187,568株 80,000円 取引銀行との関係の維持・強化
東日本旅客鉄道(株) 10,000株 75,000円 事業上の関係の維持・強化
近畿日本鉄道(株) 155,455株 65,000円 事業上の関係の維持・強化
長瀬産業(株) 47,124株 62,000円 事業上の関係の維持・強化
ユニチカ(株) 1,013,200株 58,000円 事業上の関係の維持・強化
(株)南都銀行 154,532株 58,000円 取引銀行との関係の維持・強化
本田技研工業(株) 12,245株 46,000円 事業上の関係の維持・強化
西日本旅客鉄道(株) 10,000株 42,000円 事業上の関係の維持・強化
イオン(株) 32,149株 38,000円 事業上の関係の維持・強化
コニカミノルタホールディングス(株) 51,000株 37,000円 事業上の関係の維持・強化
本来ならば「,000円」ではなく「,000,000円」を付加して出力するはずなのですが
うまく動作せず「,000円」が付加されてしまっています。
どこを直せば正しく動作するでしょうか?
ご教授の程よろしくお願いします。
お礼
ありがとうございます!! とても参考になりました。 挑戦してみます。