有沒有辦法在Ruby中執行以下Perl結構?Ruby:逐行匹配範圍
while(my $line = $file->each_line()) {
if($line =~ /first_line/ .. /end_line_I_care_about/) {
do_something;
# this will do something on a line per line basis on the range of the match
}
}
在紅寶石會讀這樣的:
file.each_line do |line|
if line.match(/first_line/) .. line.match(/end_line_I_care_about/)
do_something;
# this will only do it based on the first match not the range.
end
end
整個文件讀入內存是不是一種選擇,我不知道有多大範圍的大塊。
編輯:
感謝您的答案,我得到了答案,其中基本相同的代碼,我在首位。我遇到的問題是「它可以測試正確的操作數,並在相同的評估中變成錯誤(如在awk中),但它仍然會返回一次。」
「如果你不希望它來測試右操作數,直到下一個評估,如SED,只是用三個點(」 ...「),而不是兩個。在所有其他方面,」 ... 「的行爲就像」..「一樣。」
我標記正確答案爲指出我看到一個「..」可以在同一個關閉調用它製成。
僅供參考我使用的代碼是:
file.each_line do |line|
if line.match(/first_line/) ... line.match(/end_line_I_care_about/)
do_something;
end
end
你可以評論一下觸發器操作員泄氣嗎?我覺得它非常簡潔和有用,我不明白爲什麼你不會使用它,除非你的觀點是新的程序員不知道它,但是然後新的程序員不知道很多... – DavidG