Regex 字符串匹配在perl中,查找匹配数

Regex 字符串匹配在perl中,查找匹配数,regex,string,perl,pattern-matching,matching,Regex,String,Perl,Pattern Matching,Matching,如何按如下顺序查找AA、AC、AG、AT、CC、CA等每两个连续字符的编号 $sequence = 'AACGTACTGACGTACTGGTTGGTACGA' 不允许重叠,即$序列包含从左到右的AA CG TA CT…而不是AA AC CG @result = $subject =~ m/[ACTG][ATGC]/g; print scalar(@result); 编辑,因为您完全更改了问题: use strict; my $subject = "AACGTACTGACGTACTGGT

如何按如下顺序查找AA、AC、AG、AT、CC、CA等每两个连续字符的编号

$sequence = 'AACGTACTGACGTACTGGTTGGTACGA' 
不允许重叠,即$序列包含从左到右的AA CG TA CT…而不是AA AC CG

@result = $subject =~ m/[ACTG][ATGC]/g;

print scalar(@result);
编辑,因为您完全更改了问题:

use strict;

my $subject = "AACGTACTGACGTACTGGTTGGTACGA";
my %results = ();
while ($subject =~ m/[ACTG][ATGC]/g) {
    # matched text = $&
        if(exists $results{$&})
        {
            $results{$&}++ 
        }
        else
        {
            $results{$&} = 1;
        }
}

foreach (sort keys %results) {
    print "$_ : $results{$_}\n";
  }
输出:

AA : 1
CG : 3
CT : 2
GA : 1
GG : 2
TA : 3
TT : 1
最终编辑:希望。。。感谢@canavanin

use strict;

my $subject = "AACGTACTGACGTACTGGTTGGTACGA";
my %results = ();
while ($subject =~ m/[ACTG][ATGC]/g) {
    # matched text = $&
    $results{$&}++ 
}

foreach (sort keys %results) {
    print "$_ : $results{$_}\n";
  }
编辑,因为您完全更改了问题:

use strict;

my $subject = "AACGTACTGACGTACTGGTTGGTACGA";
my %results = ();
while ($subject =~ m/[ACTG][ATGC]/g) {
    # matched text = $&
        if(exists $results{$&})
        {
            $results{$&}++ 
        }
        else
        {
            $results{$&} = 1;
        }
}

foreach (sort keys %results) {
    print "$_ : $results{$_}\n";
  }
输出:

AA : 1
CG : 3
CT : 2
GA : 1
GG : 2
TA : 3
TT : 1
最终编辑:希望。。。感谢@canavanin

use strict;

my $subject = "AACGTACTGACGTACTGGTTGGTACGA";
my %results = ();
while ($subject =~ m/[ACTG][ATGC]/g) {
    # matched text = $&
    $results{$&}++ 
}

foreach (sort keys %results) {
    print "$_ : $results{$_}\n";
  }

我想问题中的
暗示了其他序列。@Matteo好吧,我想OP应该以某种方式扩展这个序列,或者对他想要匹配的内容给出另一个描述。检查编辑的问题我需要每个匹配的数量(每个2个字符)@FailedDev你不需要if块。由于Autovification,您可以用$results{$&}++替换整个块@卡纳瓦宁:太棒了:)我不知道!:)我想问题中的
暗示了其他序列。@Matteo好吧,我想OP应该以某种方式扩展这个序列,或者对他想要匹配的内容给出另一个描述。检查编辑的问题我需要每个匹配的数量(每个2个字符)@FailedDev你不需要if块。由于Autovification,您可以用$results{$&}++替换整个块@卡纳瓦宁:太棒了:)我不知道!:)