繁体   English   中英

Perl正则表达式字段分隔符

[英]Perl regex field separators

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

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

我的正则表达式是

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

我遇到的问题是,正则表达式仅匹配其他所有列。 如果正则表达式开始在匹配模式的最后而不是在组定义之后才应用,这是有道理的–在此点,直到到达第二列之前,没有三个空格可供匹配。

我怎样才能做到这一点? 我的谷歌福使我失败。

您应该在regexp中使用环顾断言

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

也许拆分可以帮助:

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.'
        ];

虽然,它确实创造了领先元素。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM