请教一个关于字符串解析的问题



QUOTE:
原帖由 rc_hz 于 2008-6-4 17:31 发表
不好意思,你的正则表达式似乎不能处理以下这种情况:
$ cat my2.pl
print (((/\w+|".*?"/g)[1]), "\n") while ();
__DATA__
A1 A2,B1 B2,"a,b,c",D, E
A,"a,b,c","a,b,c",D,E

$ perl my2.pl
A2
"a,b ...

你再看看你一开始的描述
有说过","是分隔符??


QUOTE:
原帖由 rc_hz 于 2008-6-4 13:23 发表
有一个文本文件,field之间通过空格进行分隔,但也有可能一个被双引号包含的field内部包含空格,例如:
$ cat testfile
A B "a b c" D E
A "a b c" "a b c" D E

现在我希望得到每行记录的第二个field,也 ...

不好意思,是我说的不清楚。我想解决的是一个general的问题,也即上面的“空格”可能换成其他分隔字符(除开双引号)。所以我想寻求一种general的解决方案;希望能稍微修改一下这种解决方案(比如:将你脚本中的空格换成逗号)就能适用于不同的字符。

非常感谢!

自己顶一下。


QUOTE:
原帖由 rc_hz 于 2008-6-5 11:05 发表
自己顶一下。

cobrawgl 兄不是已经给你答案了么?

稍做修改:
print (((/[^ "]+|".*?"/g)[1]), "\n")

[^ "]中的空格换成你需要的分隔符即可。
print (((/[\w\s]+|".*?"/g)[1]), "\n") while (<DATA>);
__DATA__
A1 A2,B1 B2,"a,b,c",D, E
A,"a,b,c","a,b,c",D,E


这个不成吗
谢谢!