oii*_*iio 4 perl split design-patterns repeat
我想分割一个具有特定重复模式的字符串,例如:
$string = "GGGGG-SOMETHING-ELSE-GGG-LAST";
Run Code Online (Sandbox Code Playgroud)
至
@array=(-SOMETHING-ELSE-,-LAST);
Run Code Online (Sandbox Code Playgroud)
我的尝试到目前为止是一个perl新手
split(/G{2,}/,$string);
Run Code Online (Sandbox Code Playgroud)
不幸的是,这导致只有GG模式被分割 - 而不是我希望产生2个数组元素的贪婪GGGGG或GGG模式.
小智 5
不,这似乎(大部分)按预期工作.以下代码:
use strict;
use warnings;
$_="GGGGG-SOMETHING-ELSE-GGG-LAST";
my @a=split(/G{2,}/,$_);
print join(",",@a) . "\n";
Run Code Online (Sandbox Code Playgroud)
产生输出:
,-SOMETHING-ELSE-,-LAST
Run Code Online (Sandbox Code Playgroud)
问题是第一个元素是空字符串.所以,要解决这个问题,您可以执行以下操作:
use strict;
use warnings;
$_="GGGGG-SOMETHING-ELSE-GGG-LAST";
my @a=grep{$_ ne ""}(split(/G{2,}/,$_));
print join(",",@a) . "\n";
Run Code Online (Sandbox Code Playgroud)
这会产生你想要的东西:
-SOMETHING-ELSE-,-LAST
Run Code Online (Sandbox Code Playgroud)