2015-05-06 10 views
0

我有一個包含產品數據的大型ruby文件。我試圖根據正則表達式將文件分割成幾部分。我有產品標題由單詞Product表示,後跟一個空格,然後是一個數字。之後,我有一堆包含產品信息的行。在模式中分割紅寶石文件?

格式如下所示。

產品1:

...data 

產品2:

...數據

...

產品N:

...數據

從文件中讀取時,我想忽略產品標題,而只顯示產品數據。爲此,我試圖根據正則表達式來分割文件。

file = File.read('products.txt') 
products = file.split(/\Aproduct \d+:\z/i) 

這個正則表達式的工作原理和發現所有產品的標題。問題是,該文件沒有被拆分成適當的部分。

當我運行puts products[0],時,整個文件被輸出到控制檯。

+1

你可能想用'可枚舉#slice_before'實驗。 –

回答

1

\A\z比賽開始和結束時,分別。而你想要的是匹配一行的開始和結束。相反,你應該使用^$錨:

/^product \d+:$/i 
1

該文件將被完成,沒有辦法避免它。但你可以遍歷每一行,並忽略了expresion相匹配的一個:字符串

File.open("file.txt", "r") do |file| 
    file.each_line do |line| 
    if # condition 
    #fancy stuff 
    else 
    # not that fancy 
    end 
end 
+0

你如何在不閱讀內容的情況下跳過內容的某一行? – tebayoso

+0

沒關係,我以爲你說你不得不一次啜泣整個文件。 –