2011-11-20 94 views
0

的數量如何找到number of of each 2 consecutive characters AA, AC,AG,AT,CC,CA...在這樣的順序:字符串在Perl匹配,找到匹配

$sequence = 'AACGTACTGACGTACTGGTTGGTACGA' 

重疊是不允許即$順序從左至右AA CG TA CT包含.. ..和不AA AC CG ......

回答

5
@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"; 
    } 
+0

我想了''...在這個問題意味着其他序列。 – Matteo

+0

yes AA AT AG AC CC CG CT CA TA TC TG TT GA GC GT GG – AWRAM

+0

@Matteo我想,OP應該以某種方式擴展它,或給出他想要匹配什麼的另一種描述。 – FailedDev