计算特定子字符串之间的匹配

时间:2018-04-27 15:12:49

标签: perl substring

我有一个字符串

1AAAAaaa>###_1BBbbbbbbb>###_2CCCCCCCCccccc

数据块以“数字”开头,以>结尾。

我需要计算这些块中有多少小写字母数大于大写字母。

作为答案我想得到

there are x places between number and >, where lowercase is over 50%.

我理解如何为整个字符串执行此操作,但不了解单独的区域。

1 个答案:

答案 0 :(得分:0)

您可以使用split将字符串的每个目标部分分隔成一个数组。 然后遍历数组并进行计数。

my $string = 'AAAAaaa>1BBbbbbbbb>2CCCCCCCCccccc>3DDDDDDDDDddd>4FFFFfffffff>';

my @targets = split(/(?=\d+\w+>)/, $string);
my $successes = 0;

foreach my $target (@targets){
    my $target_lc = $target =~ tr/a-z//;
    my $target_uc = $target =~ tr/A-Z//;

    if($target_lc > $target_uc){
        $successes++;
    }
}

print $successes;

OUTPUT = 2