• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ruby 正規表現について教えてください。)

Ruby正規表現でテキストファイルの指定部分を抽出する方法

このQ&Aのポイント
  • Rubyでテキストファイルから特定のパターンの情報を抽出する方法について教えてください。
  • テキストファイルの中から特定のパターンで囲まれた部分を抽出し、縦に並べて表示する方法が知りたいです。
  • 具体的には、#AA1#で囲まれた部分と#AA3#で囲まれた部分を抽出し、対応する行同士を組み合わせて表示したいです。

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

  • ベストアンサー
  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.2

以下のようにして下さい。 ----------------------------------- while line = DATA.gets if /#AA1#\((.*\s)(.*\s)(.*)\)/ =~ line a = $1 b = $2 c = $3 end if/#AA3#\((.*)\)/ =~ line print a," ",$1,"\n" print b," ",$1,"\n" print b," ",$1,"\n" end end __END__ #AA1#(001-1 001-2 001-3) #AA2#(pro pro) #AA3#(num1) #AA1#(002-1 002-2 002-3) #AA2#(dro dro) #AA3#(num2) ----------------------------------- 確認の為に、DATA.getsを使っていますので、 ここは、getsに戻して下さい

aaa1205
質問者

お礼

うまく実行できました、ありがとうございます。 最初は少し悩んだのですけど、見てみると、解けたので、とてもたすかりました。

その他の回答 (2)

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.3

>if /#AA1#\((.*\s)(.*\s)(.*)\)/ =~ line >a = $1 >b = $2 >c = $3 スペースが余分じゃね?

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

あんま読んでないけど while ループで a = ["001-1", "001-2", "001-3"], b = ["num1"] と溜めた時点で a.each で 001-1 num1 001-2 num1 001-3 num1 を出力して、a と b をクリアしてはどうだろうか。 もちろん、入力ファイルのフォーマットがよくわからんので、うまくいかない場合もあるだろう。

関連するQ&A