[英]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.