Perl正则表达式字段分隔符

时间:2011-09-15 16:32:56

标签: regex perl

我的一个正则表达式有一个小问题。 我的数据字段设置如下:

<3 spaces>my first column<3 spaces>my second column<3 spaces>etc. 

我的正则表达式是

\s\s\s(.*?)\s\s\s

我遇到的问题是正则表达式只与所有其他列匹配。如果正在开始在匹配模式的最末端开始应用正则表达式而不是在组定义之后,这是有道理的 - 在该点处没有一组三个空格可以匹配,直到达到第二列。

我怎样才能实现这一目标?我的google-fu让我失望了。

3 个答案:

答案 0 :(得分:4)

你应该在regexp中使用look-around assertions

/(?<=\s\s\s)(.*?)(?=\s\s\s)/

答案 1 :(得分:2)

也许split可以提供帮助:

use warnings;
use strict;
use Data::Dumper;

my $str = '   my first column   my second column   etc.';
my @cols = split /\s{3}/, $str;
print Dumper(\@cols);

__END__

$VAR1 = [
          '',
          'my first column',
          'my second column',
          'etc.'
        ];

虽然它确实创造了一个主导元素。

答案 2 :(得分:1)

你不应该使用split(/\s\s\s/, $line)吗?