Ruby flagによるファイルの特定行の抽出

このQ&Aのポイント
  • Rubyでファイルの特定行を抽出する方法を学びたいです。
  • 特定の場所から特定の場所までを指定する方法が知りたいです。
  • ファイルの特定行を抽出するプログラムを作成していますが、途中からの指定方法についてわからないです。
回答を見る
  • ベストアンサー

Ruby flagによるファイルの特定行の抽出

こんばんは。 Rubyでファイルの特定行を抽出するプログラムを作っているのですが、 flagを立てて特定の場所から特定の場所までを指定する方法をとりたいと思っています。 ある程度までは書いたのですが、そこからどうすれば良いのかが分かりません。 なにとぞ御教授、御添削の程お願い致します。 data = File.open(fpath) do |f| 6 7 f.each_line do |line| 8 9 line.gsub!(/前事業年度特定投資株式/,"前事業年度") 10 line.gsub!(/当事業年度特定投資株式/,"当事業年度") 11 12 13 line.gsub!(/保有目的が純投資目的である/,"EOF") 14 line.gsub!(/保有目的が純投資目的の/,"EOF") 15 16 # next unless line =~ /保有目的が純投資目的以外/ .. line =~ /EOF/ 17 18 19 if $flag == 1 20 text << line.chomp unless line =~ /^\s+$/ 21 22 if line =~ /保有/ 23 $flag = 1 24 else if line =~ /EOF/ 25 $flag = 0

  • Ruby
  • 回答数1
  • ありがとう数9

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4843/10252)
回答No.1

プログラムが断片的でよくわかりません。 「保有」という文字が含まれる行から、「EOF」という文字が含まれる行の前の行まで を取り出すとすると、 text = "" flag = nil IO.foreach(fpath) do |line| case line when /保有/ flag = true when /EOF/ flag = false end text << line if flag end puts text

alpacasan15
質問者

お礼

拙い質問にご丁寧に回答していただきありがとうございます。精進します。

関連するQ&A

  • Ruby flagによるファイルの特定行の抽出

    1 2 text = "" 3 data = "/home/edinet/E30682/S1002C62/index.html" 4 5 6 flag = nil 7 IO.foreach(data) do |line2| 8 9 case line2 10 when /保有目的が純投資目的以外の目的である投資株式の保有区分/ 11 flag = true 12 13 when /保有目的が純投資目的である投資株式|監査報酬の内容等/ 14 flag = false 15 16 end 17 18 text << line2.chomp if flag == true 19 break if flag == false 20 21 end 22 text.gsub!(/<\/td>/,"\t") 23 text.gsub!(/<\/tr>/,"\n") 24 text.gsub!(/<[^>]+>/,"") 25 print text 26 27 28 やりたいことは 「保有目的が純投資目的以外の目的である投資株式の保有区分」が含まれる行から 「保有目的が純投資目的である投資株式」「監査報酬の内容等」が含まれる行までを取得し、 textにそれらを入れ込む 「保有目的が純投資目的である投資株式」「監査報酬の内容等」が含まれる行まで行くと繰り返しが終了する です。 しかし、これを実行しても何も表示されないため解決方法について質問させていただきました。 なお、break if flag == false の部分をコメントアウトすると指定していない部分まで取得し、printしてしまいます。 どこを直せば正しく取得できるでしょうか? どうかご教授の程よろしくお願いいたします。

    • ベストアンサー
    • Ruby
  • {Ruby}ディレクトリ内の全てのファイルを操作

    こんばんは。 最近Rubyでファイルのスクローリングをしているのですが、 以下のようなスクリプトを全てのファイルに適用したいと考えています。 1 fpath = '/home/edinet/E30479/S1002D1W/index.html' 2 3 text = "" 4 5 6 File.open(fpath).each do |f| 7 f.each_line do |line| 8 9 line.gsub!(/前事業年度特定投資株式/,"前事業年度") 10 line.gsub!(/当事業年度特定投資株式/,"当事業年度") 11 12 end 13 end 14 15 16 flag = nil 17 IO.foreach(fpath) do |line2| 18 19 case line2 20 when /保有目的が純投資目的以外/ 21 flag = true 22 when /保有目的が純投資目的/ 23 flag = false 24 end 25 26 text << line2.chomp if flag == true 27 end Dir.globなどを使えば良いと思うのですが、具体的にはどのように記述すればよいのでしょうか? ご教授の程お願い致します。

    • ベストアンサー
    • Ruby
  • Ruby 改行文字の認識

    こんにちは。 最近質問させていただいているRubyのスクローリングの際に1行ごとに文章を判定し、flagを立てて取得しているのですが、下記のプログラムで改行文字「¥n」を事前に挿入しているにもかかわらずflagがうまく機能しないため質問させていただきました。 読み込んでいるhtmlファイルは改行が少ないファイルであるため、改行を入れてあげなければ余計な部分まで取得してしまう状態です。 以下プログラムです。 1 text = "" 2 data = "/home/edinet/E05267/S1001YX6/index.html" 3 4 flag = nil 5 6 File.open(data) do |f| 7 8 f.each_line do |file| 9 file.gsub!(/<\/tr>/,"\n") 10 11 #IO.foreach(file) do |line2| 12 file.each_line do |line2| 13 case line2 14 when /保有目的が純投資目的以外の目的である投資株式の保有区分|保有目的が純投資目的以外/ 15 flag = true 16 17 when /保有目的が純投資目的である投資株式|EOF|無議決権株式|政府及び地方公共団体|普通株式|【監査報酬の内容等】/ 18 flag = false if flag == true 19 20 end 21 22 text << line2 if flag != nil 23 break if flag == false 24 25 end 26 text.gsub!(/<\/td>/,"\t") 27 #text.gsub!(/<\/tr>/,"\n") 28 text.gsub!(/<[^>]+>/,"") 29 print text 30 31 end 32 end ご回答の程よろしくお願い致します。

    • ベストアンサー
    • Ruby
  • Ruby 正規表現での文字列取得

    こんにちは。 先日Rubyでとあるファイルから特定の文字列を取得するプログラムを組んでおりましたところ、正規表現は合っていそうなのに取得できない場合がありましたので質問させていただきました。 <h6 class="smt_head5" style="padding-left: 27pt; padding-right: 0pt; margin-top: 0pt; margin-bottom: 0pt; text-indent: 0pt; font-family: 'MS 明朝'; text-align: justify; letter-spacing: 0pt; line-height: 15pt;">イ 保有目的が純投資目的以外の目的である投資株式</h6><p class="smt_text5" style="text-align: justify; padding-left: 40pt; padding-right: 0pt; margin-top: 0pt; margin-bottom: 0pt; text-indent: 9.9pt; font-family: 'MS 明朝'; letter-spacing: 0pt; line-height: 14pt;">銘柄数             5銘柄</p><p class="smt_text5" style="text-align: justify; padding-left: 40pt; padding-right: 0pt; margin-top: 0pt; margin-bottom: 0pt; text-indent: 9.9pt; font-family: 'MS 明朝'; letter-spacing: 0pt; line-height: 14pt;">貸借対照表計上額の合計額   299,505千円</p><p class="smt_text6" style="text-align: justify; padding-right: 0pt; margin-top: 0pt; margin-bottom: 0pt; font-family: 'MS 明朝'; letter-spacing: 0pt; line-height: 14pt;"> </p><p style="page-break-before: always; line-height: 0.75pt; width: 100%; font-size: 0.75pt;">&nbsp;</p><h6 class="smt_head5" style="padding-left: 36pt; padding-right: 0pt; margin-top: 0pt; margin-bottom: 0pt; text-indent: -9pt; font-family: 'MS 明朝'; text-align: justify; letter-spacing: 0pt; line-height: 15pt;">ロ 保有目的が純投資目的以外の目的である投資株式の保有区分、銘柄、株式数、貸借対照表計上額及び保有目的</h6><p class="smt_text5" style="padding-left: 36pt; text-indent: 9pt; line-height: 15pt;">(前事業年度)</p> 上記のような文字列を、 text = "" 4 5 data = File.open(fpath) do |f| 6 7 f.each_line do |line| 8 9 line.gsub!(/前事業年度特定投資株式/,"前事業年度") 10 line.gsub!(/当事業年度特定投資株式/,"当事業年度") 11 12 13 line.gsub!(/保有目的が純投資目的である/,"EOF") 14 line.gsub!(/保有目的が純投資目的の/,"EOF") 15 16 next unless line =~ /保有目的が純投資目的以外/ .. line =~ /EOF/ 17 text << line.chomp unless line =~ /^\s+$/ 18 19 20 end 21 end 以下のような文字列で取得しようとしたのですが、「保有目的が純投資目的以外」の部分にひっかかりませんでした。 また別の文字列中にある「保有目的が純投資目的である」の部分をEOFに置換する行程もおそらく作動していないと思われます。 どうしたら正しく取得できるでしょうか?ご教授お願い致します。

  • Ruby 正規表現による文章取得

    こんばんは。 最近正規表現を用いたスクローリングを行っているのですが、 その中でうまく動かない部分があったため質問させていただきました。 プログラムは以下の通りです。 text = "" data = Dir.glob("/home/edinet/**/*.html") data.each do |find| flag = nil IO.foreach(find) do |line2| case line2 when /保有目的が純投資目的以外の目的である投資株式の保有区分、銘柄、株式数、貸借対照表計上額及び保有目/ flag = true when /保有目的が純投資目的である投資株式の前事業年度|保有目的が純投資目的|普通株式/ flag = false end text << line2.chomp if flag == true end print text end >保有目的が純投資目的である投資株式の前事業年度|保有目的が純投資目的|普通株式 この3つのどれかが含まれている場合にfalseを返し、文字列の取得が終了するはずなのですが、「普通株式」が含まれている行以降も文字列を取得し続けてしまいます。 正規表現が間違っているためなのでしょうか? ご回答の程どうかよろしくお願い致します。

  • Ruby 改行文字の挿入

    こんばんは。 Rubyにおいて、改行の無いhtmlファイル(/home/edinet/**/*.html)を読み込む際に先に改行文字を入れておき、10~15行目の正規表現の通りに文字列を取得したいと考えています。 下記のままのプログラムだと改行が無いhtmlファイルであるため余計な部分まで取得してしまいます。 以下例になります。 ”中外製薬(株) 100株 0,000,000円 情報収集のため”の部分の後に指定した普通株式という文字があるにもかかわらずそれ以降も取得してしまっています。 当事業年度 銘   柄 株式数(株) 貸借対照表計上額(百万円) 保有目的 大正製薬ホールディングス(株) 300,000株 2,493,000,000円 取引関係の強化のため 日本水産(株) 8,000,000株 1,736,000,000円 取引関係の強化のため 大日本住友製薬(株) 913,000株 1,497,000,000円 取引関係の強化のため JCRファーマ(株) 550,000株 1,303,000,000円 取引関係の強化のため アルフレッサホールディングス(株) 176,900株 1,190,000,000円 取引関係の強化のため (株)スズケン 157,200株 628,000,000円 取引関係の強化のため 東邦ホールディングス(株) 243,400株 531,000,000円 取引関係の強化のため (株)メディパルホールディングス 319,100株 503,000,000円 取引関係の強化のため コニカミノルタ(株) 445,000株 428,000,000円 取引関係の強化のため (株)三菱UFJフィナンシャル・グループ 611,000株 346,000,000円 取引関係の強化のため (株)ほくやく・竹山ホールディングス 251,500株 176,000,000円 取引関係の強化のため (株)みずほフィナンシャルグループ 504,080株 102,000,000円 取引関係の強化のため (株)バイタルケーエスケー・ホールディングス 99,600株 77,000,000円 取引関係の強化のため イワキ(株) 29,000株 5,000,000円 取引関係の強化のため 塩野義製薬(株) 1,000株 1,000,000円 情報収集のため 田辺三菱製薬(株) 1,000株 1,000,000円 情報収集のため 小野薬品工業(株) 100株 0,000,000円 情報収集のため (株)三菱ケミカルホールディングス 1,500株 0,000,000円 情報収集のため アステラス製薬(株) 100株 0,000,000円 情報収集のため 武田薬品工業(株) 100株 0,000,000円 情報収集のため エーザイ(株) 100株 0,000,000円 情報収集のため 第一三共(株) 200株 0,000,000円 情報収集のため 中外製薬(株) 100株 0,000,000円 情報収集のため 普通株式 296,000,000株 計 296,000,000,000,000円 普通株式 132,891,217株 132,891,217,000,000円 東京証券取引所(市場第一部) 単元株式数1,000株 計 132,891,217株 132,891,217,000,000円 ― ― 平成14年8月2日(注) ― 132,891株 ― 26,137,000,000円 △8,735株 22,454,000,000円 政府及び地方公共団体 金融機関 金融商品取引業者 その他の法人 外国法人等 個人その他 計 個人以外 個人 株主数(人) ― 48株 38,000,000円 273株 130,000,000円 19株 18,939,000,000円 19,447株 ― 所有株式数(単元) ― 21,507,000,000円 1,088株 34,172,000,000円 26,219株 22,000,000円 48,527株 131,535,000,000円 1,356,217株 所有株式数の割合(%) ― 16.35,000,000円 0.83株 25.98,000,000円 19.93株 0.02,000,000円 36.89株 100.00,000,000円 ― 以下のメソッドでそういった事をしようとする場合、どのようにして入れれば良いのでしょうか? File.openとeach_line、gsub!を用いて置換して挿入する方法では上手く取得することができませんでした。 以下プログラムになります。 1 text = "" 2 3 data = Dir.glob("/home/edinet/**/*.html") 4 5 data.each do |find| 6 7 flag = nil 8 IO.foreach(find) do |line2| 9 10 case line2 11 when /保有目的が純投資目的以外の目的である投資株式の保有区分、銘柄、株式数、貸借対照表計上額及び保有目/ 12 flag = true 13 when /保有目的が純投資目的である投資株式の前事業年度|保有目的が純投資目的|普通株式/ 14 flag = false 15 end 16 17 text << line2.chomp if flag == true 18 19 end 20 21 22 23 text.gsub!(/<\/td>/,"\t") 24 text.gsub!(/<\/tr>/,"\n") 25 text.gsub!(/<[^>]+>/,"") 26 27 text.gsub!(/前事業年度特定投資株式/,"前事業年度") 28 text.gsub!(/当事業年度特定投資株式/,"当事業年度") 29 text.gsub!(/前事業年度  特定投資株式/,"前事業年度") 30 text.gsub!(/当事業年度  特定投資株式/,"当事業年度") 31 text.gsub!(/前事業年度\t\t\t\t\n銘   柄/,"\n前事業年度\t銘   柄") 32 text.gsub!(/当事業年度\t\t\t\t\n銘   柄/,"\n当事業年度\t銘   柄") 33 text.gsub!(/^.*nbsp.*/,"") 34 text.sub!(/銘柄\t株式数/,"\t\t\t\t\n前事業年度\t銘   柄\t株式数") 35 text.sub!(/銘柄\t株式数/,"\t\t\t\t\n当事業年度\t銘   柄\t株式数") 36 text.sub!(/銘柄\t株式数/,"\t\t\t\t\n前事業年度\t銘   柄\t株式数") 37 text.sub!(/銘柄\t株式数/,"\t\t\t\t\n当事業年度\t銘   柄\t株式数") 38 text.gsub!(/前事業年度 特定投資株式/,"") 39 text.gsub!(/当事業年度 特定投資株式/,"") 40 41 print text ご回答の程よろしくお願いいたします。

    • ベストアンサー
    • Ruby
  • Ruby 正規表現による文字列取得

    こんにちは。 何度か質問させていただいていたのですが、正規表現を使っても正しく取得できない部分があったので質問させていただきました。 取得したい文字列の部分にflagをたてて、そこからfalseになるまで取得し続ける形をとっているのですが、どうもfalseになってbreakするはずの部分で取得を終了してくれません。 どう直せば良いのでしょうか?ご教授お願い致します。 プログラムは以下の通りです。 2 text = "" 3 4 data = "/home/edinet/E05267/S1001YX6/index.html" 5 6 flag = nil 7 IO.foreach(data) do |line2| 8 line2.gsub!(/普通株式/,"\nEOF") 9 case line2 10 when /保有目的が純投資目的以外の目的である投資株式の保有区分|保有目的が純投資目的以外/ 11 flag = true 12 13 when /保有目的が純投資目的である投資株式の前事業年度|EOF|無議決権株式|政府及び地方公共団体|調 整 後 転 換 価 額|保有目的が純投資目的|普通株式|監査報酬の内容等/ 14 flag = false if flag == true 15 16 end 17 18 text << line2.chomp if flag != nil 19 break if flag == false 20 21 end 22 text.gsub!(/<\/td>/,"\t") 23 text.gsub!(/<\/tr>/,"\n") 24 text.gsub!(/<[^>]+>/,"") 25 print text 実行結果 ロ 保有目的が純投資目的以外の目的である投資株式の保有区分、銘柄、株式数、貸借対照表計上額及び保有目的&nbsp;(前事業年度)特定投資株式銘柄 株式数(株) 貸借対照表計上額(千円) 保有目的 アイサンテクノロジー株式会社 50,000 11,150 取引関係の維持強化 セイコーエプソン株式会社 10,000 9,130 取引関係の維持強化 株式会社トプコン 10,000 8,570 取引関係の維持強化 株式会社大和証券グループ本社 10,000 6,560 取引関係の維持強化 株式会社八十二銀行 10,000 5,690 取引関係の維持強化 佐田建設株式会社 60,000 4,500 取引関係の維持強化 &nbsp;&nbsp;(当事業年度)特定投資株式銘柄 株式数(株) 貸借対照表計上額(千円) 保有目的 アイサンテクノロジー株式会社 50,000 43,900 取引関係の維持強化 セイコーエプソン株式会社 10,000 32,100 取引関係の維持強化 株式会社トプコン 10,000 16,920 取引関係の維持強化 株式会社大和証券グループ本社 10,000 8,980 取引関係の維持強化 福井コンピュータホールディングス株式会社 10,000 8,650 取引関係の維持強化 株式会社八十二銀行 10,000 5,870 取引関係の維持強化 &nbsp;&nbsp;ハ&nbsp; 保有目的が純投資目的である投資株式該当事項はありません。&nbsp;(6) 会計監査の状況当社は、金融商品取引法監査について有限責任監査法人トーマツより継続的に監査を受けており、正確な経営情報・財務情報の提供に配慮しております。業務を執行した公認会計士の氏名 所属する監査法人 指定有限責任社員 業務執行社員 五十幡 理一郎 有限責任監査法人トーマツ 指定有限責任社員 業務執行社員 小&nbsp; 松&nbsp;&nbsp;&nbsp;&nbsp; 聡 有限責任監査法人トーマツ &nbsp;継続関与年数については、7年以内であるため記載を省略しております。また、公認会計士4名、その他2名が会計監査業務に関っております。&nbsp;&nbsp;(7) 取締役会で決議することができる株主総会決議事項(自己の株式の取得)当社は、経営環境の変化に対応した機動的な資本政策を行うため、会社法第165条第2項の規定により、「取締役会の決議によって市場取引等により自己の株式を取得することができる。」旨を定款に定めております。&nbsp;(中間配当)当社は、株主への機動的な利益還元を行うため、会社法第454条第5項の規定により、「取締役会の決議によって、毎年9月30日を基準日として、中間配当を行うことができる。」旨を定款に定めております。&nbsp;(8) 取締役の定数当社の取締役は、「7名以内とする。」旨を定款に定めております。&nbsp;(9) 取締役の選任の決議要件当社は、取締役の選任決議について、「株主総会において議決権を行使することができる株主の議決権の3分の1以上を有する株主が出席し、その議決権の過半数をもって行い、かつ累積投票によらない。」旨を定款に定めております。&nbsp;(10) 株主総会の特別決議要件当社は、株主総会における特別決議の定足数を緩和することにより、株主総会の円滑な運営を行うため、会社法第309条第2項に定める株主総会の特別決議要件について、「議決権を行使することができる株主の議決権の3分の1以上を有する株主が出席し、その議決権の3分の2以上をもって行う。」旨を定款に定めております。&nbsp;(2) 【監査報酬の内容等】&nbsp;(1) 【監査公認会計士等に対する報酬の内容】前事業年度 当事業年度 監査証明業務に基づく報酬(千円) 非監査業務に基づく報酬(千円) 監査証明業務に基づく報酬(千円) 非監査業務に基づく報酬(千円) 14,600 ─ 14,600 500 &nbsp;&nbsp;(2) 【その他重要な報酬の内容】該当事項はありません。&nbsp;(3) 【監査公認会計士等の提出会社に対する非監査業務の内容】前事業年度該当事項はありません。&nbsp;当事業年度当社は監査公認会計士等に対して、公認会計士法第2条1項の監査証明業務以外の業務である内部管理体制の整備に関する助言・指導業務について対価を支払っております。&nbsp;(4) 【監査報酬の決定方針】当社の監査法人に対する監査報酬の決定方針としましては、事前に見積書の提示を受け、監査日数、監査内容及び当社の規模等を総合的に勘案し、監査役会及び関連部門と協議を行ったうえ決定することとしております。&nbsp;第5 【経理の状況】&nbsp;1.財務諸表の作成方法について当社の財務諸表は、「財務諸表等の用語、様式及び作成方法に関する規則」(昭和38年大蔵省令第59号。以下「財務諸表等規則」という。)に基づいて作成しております。 なお、当事業年度(平成25年4月1日から平成26年3月31日まで)の財務諸表に含まれる比較情報については、「財務諸表等の用語、様式及び作成方法に関する規則等の一部を改正する内閣府令」(平成24年9月21日内閣府令第61号)附則第2条第2項により、改正前の財務諸表等規則に基づいて作成しております。&nbsp;2.監査証明について当社は、金融商品取引法第193条の2第1項の規定に基づき、事業年度(平成25年4月1日から平成26年3月31日まで)の財務諸表について、有限責任監査法人トーマツにより監査を受けております。&nbsp;3.連結財務諸表について当社は子会社がありませんので、連結財務諸表を作成しておりません。&nbsp;4.財務諸表等の適正性を確保するための特段の取組みについて当社は、財務諸表等の適正性を確保するための特段の取組みを行っております。具体的には、会計基準等の内容を適切に把握し、又は会計基準等の変更等について適切に対応することができる体制を整備するため、公益財団法人財務会計基準機構へ加入し、同機構が開催する研修等へ参加しております。 ※長いためこれ以降は割愛します。 よろしくお願いします。

    • ベストアンサー
    • Ruby
  • Rubyの正規表現、文字の追加

    こんばんは。 文章の先頭に指定した文字列を指定した箇所(文頭)のみに追加したいと思っているのですが、 どうもうまくいかないため質問させていただきました。 (1)全角英数字を正規表現で取得できていない (2)unless文の後の条件の複数指定が機能せずエラーになる (3)sub!で置換する以外に文字の追加方法はないか (4)unlessで条件指定しない場合、すべての行の頭に「当事業年度」という文字がついてしまう 上記4つがうまくいっていない要因です。 (3)に関してはinsertを他の手段として考えています。 以下プログラムです。 text.each_line do |t| 56 57 case t 58 when/前事業年度\t銘   柄/ 59 flag = true 60 when/前事業年度\t当事業年度/ 61 flag = false if flag == true 62 end 63 64 t.sub!(/^(\p{Katakana}|[一-龠々]|\w|(株)|\p{Hiragana}|[:upper:]{0,20}[1-9])/) {|d| "前事業年度\t#{$1}"} unless flag == false && /当事業年度/ 65 t.sub!(/^(\p{Katakana}|[一-龠々]|\w|(株)|\p{Hiragana}|[:upper:]{0,20}[1-9])/) {|d| "当事業年度\t#{$1}"} unless flag == false && /前事業年度/ 変換したい文章は以下のものです。 前事業年度 銘   柄 株式数(株) 貸借対照表計上額(百万円) 保有目的 株式会社日本触媒 6,338,000株 7,726,000,000円 当社グループの主要原料供給元であり、取引関係強化の一環として保有している。 ユニ・チャーム株式会社 278,100株 1,533,000,000円 当社グループ製品の販売先であり、取引関係強化の一環として保有している。 栗田工業株式会社 572,600株 1,282,000,000円 当社グループ製品の販売先であり、取引関係強化の一環として保有している。 JXホールディングス株式会社 2,477,050株 1,231,000,000円 当社グループ製品の販売先および主要原料供給元である企業の持株会社であり、取引関係強化の一環として保有している。 KPXChemical 158,621株 967,000,000円 KPXChemical設立時に出資しており、協力関係維持のため保有している。 株式会社ブリヂストン 194,000株 710,000,000円 当社グループ製品の販売先であり、取引関係強化の一環として保有している。 関西ペイント株式会社 214,225株 315,000,000円 当社グループ製品の販売先であり、取引関係強化の一環として保有(取引先持株会による定期買付)している。 当事業年度 銘   柄 株式数(株) 貸借対照表計上額(百万円) 保有目的 KPXHoldings 58,990株 284,000,000円 上記KPXChemicalの株式を40%保有する大株主であり、協力関係強化のため保有している。 大日精化工業株式会社 524,000株 250,000,000円 当社グループ製品の販売先であり、取引関係強化の一環として保有している。 高圧ガス工業株式会社 424,000株 241,000,000円 当社グループ製品の販売先であり、取引関係強化の一環として保有している。 サカタインクス株式会社 202,000株 196,000,000円 当社グループ製品の販売先であり、取引関係強化の一環として保有している。地元企業との関係強化のため保有している。 株式会社松風 138,000株 120,000,000円 地元企業との関係強化のため保有している。 コニシ株式会社 50,000株 91,000,000円 当社グループ製品の販売先であり、取引関係強化の一環として保有している。 稲畑産業株式会社 66,000株 69,000,000円 当社グループ製品の販売および原料購入における代理店であり、取引関係強化の一環として保有している。 日本特殊塗料株式会社 112,000株 68,000,000円 当社グループ製品の販売先であり、取引関係強化の一環として保有している。 電気化学工業株式会社 142,000株 50,000,000円 当社グループ製品の販売先であり、取引関係強化の一環として保有している。 株式会社三菱ケミカルホールディングス 104,500株 44,000,000円 当社グループ製品の販売先および主要原料供給元である企業の持株会社であり、取引関係強化の一環として保有している。 長瀬産業株式会社 31,000株 39,000,000円 当社グループ製品の販売および原料購入における代理店であり、取引関係強化の一環として保有している。 横浜ゴム株式会社 36,000株 34,000,000円 当社グループ製品の販売先であり、取引関係強化の一環として保有している。 前事業年度から下の7行の文頭に「前事業年度」という文字を追加し、 当事業年度から下の行の文頭に「当事業年度」という文字を追加することが目標です。 どうかご教授のほどよろしくお願いいたします。

  • 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円」が付加されてしまっています。 どこを直せば正しく動作するでしょうか? ご教授の程よろしくお願いします。

  • Ruby 正規表現で特定の文字を取得・挿入

    こんにちは。 当方Ruby初心者です。 HTMLからの正規表現による文字列の取得のプログラムを組んでいたのですが、 分からない所があったため質問させていただきました。 やりたいことは、以下の数字の文字列の後ろにそれぞれ「株」と「,000円」という文字を追加することです。 全ての数字の後ろに株、もしくは,000円を追加する事はできるのですが、個別に追加することができません。 どうかお力添えをお願いいたします。 前事業年度 銘   柄 株式数(株) 貸借対照表計上額(千円) 保有目的   株式会社エイチーム 200,400円株 722,442  関係強化   株式会社ケイブ 150 15,900  関係強化 &nbsp;  当事業年度 銘   柄 株式数(株) 貸借対照表計上額(千円) 保有目的   株式会社エイチーム 125,300 697,921  関係強化   株式会社ケイブ 5,000 8,475  関係強化 以下プログラムです。 if text.match('株式数(株) 貸借対照表計上額(千円)') 28 text.gsub!(/\d[0-9]*?,\d[0-9]+|\d[0-9]+/) {$&.concat('株')} 29 text.gsub!(/\d[0-9]*?,\d[0-9]+|\d[0-9]+/) {|s1| s1.concat('株')} 30 else if text.match('株式数(1000株)') 31 text.sub!(/\d[0-9]+,\d[0-9]+/) {|s| s.concat(',000株')} 32 end 33 end 34 print text

    • ベストアンサー
    • Ruby