使用Perl提取所有可能的子字符串
我想要输出数组作为使用Perl提取所有可能的子字符串,perl,substring,Perl,Substring,我想要输出数组作为 $str="abcde" 即从左向右移动,所有不同长度的所有可能组合 此外,还提供了删除重复元素的附加功能,如 a,b,c,d,e,ab,bc,cd,de,abc,bcd,cde,abcd,bcde,abcde. 数组中可能有许多重复项 这就是我尝试过的 $str="abcdd" for($j=1;$j这是一个非常简单的问题。这个程序在一行中解决了它,尽管双循环可能更清晰 for ($j=1;$j<=$n;$j++) { my @tmp = unpack("
$str="abcde"
即从左向右移动,所有不同长度的所有可能组合
此外,还提供了删除重复元素的附加功能,如
a,b,c,d,e,ab,bc,cd,de,abc,bcd,cde,abcd,bcde,abcde.
数组中可能有许多重复项
这就是我尝试过的
$str="abcdd"
for($j=1;$j这是一个非常简单的问题。这个程序在一行中解决了它,尽管双循环可能更清晰
for ($j=1;$j<=$n;$j++) {
my @tmp = unpack("(A$j)*", $seq);
print "@tmp\n";
}
输出
use strict;
use warnings;
use 5.010;
my $str = 'abcde';
my @list;
push @list, $str =~ /(?=(.{$_}))/g for 1 .. length $str;
say join ',', @list;
这是一个非常简单的问题。这个程序在一行中解决它,尽管双循环可能更清晰
for ($j=1;$j<=$n;$j++) {
my @tmp = unpack("(A$j)*", $seq);
print "@tmp\n";
}
输出
use strict;
use warnings;
use 5.010;
my $str = 'abcde';
my @list;
push @list, $str =~ /(?=(.{$_}))/g for 1 .. length $str;
say join ',', @list;
解决这个问题的唯一诀窍是,要找到重叠的正则表达式匹配项,需要使用
如果只需要唯一的子字符串,则可以读取或使用
产出:
use strict;
use warnings;
use List::MoreUtils qw(uniq);
for my $string (qw(abcde abcdd)) {
my @list = uniq map { $string =~ /(?=(.{$_}))/g } ( 1 .. length $string );
print "$string - ", join( ',', @list ), "\n";
}
解决这个问题的唯一诀窍是,要找到重叠的正则表达式匹配项,需要使用
如果只需要唯一的子字符串,则可以读取或使用
产出:
use strict;
use warnings;
use List::MoreUtils qw(uniq);
for my $string (qw(abcde abcdd)) {
my @list = uniq map { $string =~ /(?=(.{$_}))/g } ( 1 .. length $string );
print "$string - ", join( ',', @list ), "\n";
}
向我们展示您为($j=1;$js)尝试过的内容向我们展示您为($j=1;$j)尝试过的内容如何避免重复,如字符串aacde,我不希望a,a在@list中出现两次如何避免重复,如字符串aacde,我不希望a,a在@list中出现两次