• 締切済み

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に置換する行程もおそらく作動していないと思われます。 どうしたら正しく取得できるでしょうか?ご教授お願い致します。

みんなの回答

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

単純な文字列なので、タイプミス(コピペミス)がない限りマッチします。 あと、文字コードは合ってますか?まあ、文字コードが合ってないと全くマッチしないでしょうけど。

関連するQ&A

専門家に質問してみよう