我想分割一个具有特定重复模式的字符串,例如:
$string = "GGGGG-SOMETHING-ELSE-GGG-LAST";
到
@array=(-SOMETHING-ELSE-,-LAST);
我对perl新手的尝试
split(/G{2,}/,$string);
不幸的是,这导致只有GG模式被分割 - 而不是我希望产生2个数组元素的贪婪的GGGGG或GGG模式。
答案 0 :(得分:5)
不,这似乎(大部分)按预期工作。以下代码:
use strict;
use warnings;
$_="GGGGG-SOMETHING-ELSE-GGG-LAST";
my @a=split(/G{2,}/,$_);
print join(",",@a) . "\n";
产生输出:
,-SOMETHING-ELSE-,-LAST
问题是第一个元素是空字符串。因此,要解决这个问题,您可以执行以下操作:
use strict;
use warnings;
$_="GGGGG-SOMETHING-ELSE-GGG-LAST";
my @a=grep{$_ ne ""}(split(/G{2,}/,$_));
print join(",",@a) . "\n";
这就产生了你想要的东西:
-SOMETHING-ELSE-,-LAST
答案 1 :(得分:0)
我刚刚在我的机器上检查了你的代码并且工作正常:
$string = "GGGGG-SOMETHING-ELSE-GGG-LAST";
print join(':', split(/G{2,}/,$string));
返回:
:-SOMETHING-ELSE-:-LAST
我正在使用的perl版本是:v5.10.1
是否可以添加一些关于如何运行它的信息?