- 论坛徽章:
- 0
|
重点是第二点.
1. Text::ParseWords只能处理很简单的嵌套, 如果处理上面的例子结果是:
#&testTextParseWords;
sub testTextParseWords {
use Text::ParseWords;
my $str = q/"a","a,a",1,""b,b,b"",2/;
print "$str\n";
my @words = "ewords('\s*,\s*', 1, $str);
map { print "[$_] "} @words;
}
|
输出:
["a"] ["a,a"] [1] [""b] [b""] [2] |
2. 你的定义格式会产生歧义.
按你的理解: ""b,b,b""是一个字段["b,b,b"] 对吧?
那么前面的"a","a,a"可以理解为一个字段[a","a,a], 而不是[a]和[a,a]这2个字段.
解决办法? 请参考CSV(comma separated values)标准.
按照CSV标准: 某字段中的一个"必须用2个"来表示, 整个字段用"括起来.
你的数据唯一不合格式的是""b,b,b"" 它用CSV来表示应该是"""b,b,b"""
用Excel将数据另存为.csv然后用Notepad打开就以看到是如何转换的.
CPAN有不少CSV模块.
3. 按照csv标准定义的数据, 用正则式还是可以提取的.
[ 本帖最后由 Lonki 于 2007-11-15 20:40 编辑 ] |
|