ste*_*esu 0 regex arrays perl split
可能重复:
如何使用正则表达式解析Perl中引用的CSV?
我试图获取一个CSV文件并将每一行导入一个数组(其中每个元素代表一列).CSV文件的格式非常简单:
item1,item2,item3
nextrowitem1,item2,item3
"items,with,commas","are,in,quotes"
Run Code Online (Sandbox Code Playgroud)
我使用以下方法导入了CSV文件:
open(FILE, "test.csv");
@lines = <FILE>;
Run Code Online (Sandbox Code Playgroud)
然后我使用以下方法循环:
foreach(@lines){
@items = split(/regular expression/);
/*Do stuff with @items array*/
}
Run Code Online (Sandbox Code Playgroud)
(请注意,您不需要使用,split(/regular expression, $string);因为split()假设$_没有提供字符串)
在我使用CSV文件测试文件之前,其中没有任何项目包含逗号和简单的正则表达式split(/,/).这工作得很好,所以在这个正则表达式之后,文件,读取它或我的循环没有任何问题.但是,当我点击包含逗号的项目时,他们可以理解地划分为:
1 => "items
2 => with
3 => commas"
4 => "are
5 => in
6 => quotes"
Run Code Online (Sandbox Code Playgroud)
而不是期望的:
1 => items,with,commas
2 => are,in,quotes
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我开发正则表达式来正确分割这个数组吗?基本上如果项目以quote(")开头,则需要等到","分割.如果项目不以引号开头,则需要等到,分割.