2016-08-29 19 views
0

ファイルがあります。そのファイルを上書きして、この「LINE_MATCH_START」と一致するときはいつでもその行の中の唯一のテキストです"LINE_MATCH_END"にマッチするまで続きます(行内の唯一のテキストでなければなりませんが、コメントは許されますが、これは空白以外の行の最初のものでなければなりません)。私はそれがファイル全体に行き、何度もそれをキャッチしてそれを保存したい。パターンを検索してその中のすべてをルビーで検索する

例、上記のスニペットから

printf ("this is some text") 

// comment LINE_MATCH_START this should be ignored 

some_other_code 

    LINE_MATCH_START // can have spaces before it and comments after it 
oh 
this 
should be 
saved 
    LINE_MATCH_END 
some_other_piece_of_code 
LINE_MATCH_START 
AGAIN 
lets save this part as well 
LINE_MATCH_END 

は、「LINE_MATCH_START」の前にスペースがあることができ、それは同じラインが、コードの無い他の作品にコメントを持つことができます。

私はルビーでこれを行うことができますどのように

oh 
this 
should be 
saved 
AGAIN 
lets save this part as well 

私のコードはすべて、この部分を保存したいですか?

答えて

0

これはあなたの出力を得て、おそらくアイデアに役立つように見えますが、もっと頑強なものに取り組むでしょう。

f = File.new('output.txt', 'w') 
visible = false 
IO.foreach('file_name') do |line| 
    case line 
    when /\s*LINE_MATCH_START.*/ then visible = true 
    next 
    when /\s*LINE_MATCH_END.*/ then visible = false 
    end 
    f.write(line) if visible 
end 
+0

ありがとうございます、私の出力を別のファイルに保存しません。どうすればそのファイルを新しいファイルに保存できますか? – lovejoy

+0

ok、編集したコード – nikkypx

関連する問題