可能重複:
How can I parse quoted CSV in Perl with a regex?簡單的Perl分裂()和正則表達式的問題
我試圖採取一個CSV文件導入每一行到一個數組(其中每個元素代表一列)。一個CSV文件的格式很簡單:
item1,item2,item3
nextrowitem1,item2,item3
"items,with,commas","are,in,quotes"
我進口使用CSV文件:
open(FILE, "test.csv");
@lines = <FILE>;
然後,我通過它使用循環:
foreach(@lines){
@items = split(/regular expression/);
/*Do stuff with @items array*/
}
(請注意,你做不需要使用split(/regular expression, $string);
,因爲split()
假設爲$_
,如果沒有字符串提供)
在我使用CSV文件測試文件之前,其中沒有任何項目包含逗號和split(/,/)
的簡單正則表達式。這工作得很好,所以在正則表達式之後,文件,讀取或循環都沒有問題。然而,當我打包含一個逗號的項目他們也有可以理解的劃分,像這樣:
1 => "items
2 => with
3 => commas"
4 => "are
5 => in
6 => quotes"
代替所需的:
1 => items,with,commas
2 => are,in,quotes
誰能幫我制定一個正則表達式正確拆分這陣?基本上,如果該項目以報價("
)開頭,則需要等到","
才能拆分。如果該項目沒有以報價開始,則需要等到,
才能分拆。
謝謝你鏈接到那=)肯定是重複的 - 事實上,他的問題比我的更詳細。我現在將看看CPAN,看看我是否可以利用它。 – stevendesu