perl在单个char上拆分字符串,而不是重复的char

时间:2012-11-01 10:38:11

标签: perl split char

我正在使用现有的perl脚本来处理我无法控制的数据库查询的文本文件输出。

数据包含以“|”分隔的字段,但有些字段包含“||”。没有空字段。字段分隔符的两侧可能还有空格,我也想删除它。

除了更改“||”之外,我找不到一种简单的方法来实现这一目标除了别的东西,并在分裂后把它放入黑客,这看起来有点沉重。

文件很大(通常最多约100M)。

使用split(/ *\| */, $line)与“||”分开使用字符。

有什么想法吗?

3 个答案:

答案 0 :(得分:3)

split /\s*(?<!\|)\|(?!\|)\s*/

答案 1 :(得分:3)

你可以使用负面的后视和前瞻来确保你所分割的|周围没有|个符号:

split / \s* (?<!\|) \| (?!\|) \s* /x

答案 2 :(得分:1)

请使用Text::CSVTie::Handle::CSV来浏览该文件。如果文本文件已正确完成,则会引用包含 || 的字段。