多个不匹配[dot(。)]搜索模式

时间:2011-11-17 13:08:12

标签: perl

多个不匹配的语法是什么,即。 Perl中的点运算符(。)? 我需要将DNA序列与靶序列匹配,允许3个不匹配。 那将是什么语法?

例如,让DNA序列ATGC和靶序列为ATGAGCA。匹配后,我的结果应如下所示:

position no :          pattern
  1                    A...
  1                    .T..
  1                    ..G.
  3                    ..G.
  3                    ...C
  4                    A...

2 个答案:

答案 0 :(得分:0)

对于您在模式中显示的内容,您希望.{3}为“最多3个”匹配,您需要.{,3},其中{ n {{ 1}} m ,是一个“量词”,至少指定 n 匹配,但不超过 m 。如果省略数字,则默认为0或无限制。

要将}ATGC相匹配,我认为您可能需要ATGAGCA,因为这是常规的,您可以这样表达:

/(?:A[^T]{,3}T[^G]{,3}G[^C]{,3}C)+/

答案 1 :(得分:0)

检查此代码

use warnings;
use strict;

my $DNA_seq = "ATGC";
my $target_sequence = "ATGAGCA";

my  @tseq = split(//,$target_sequence);
print "position pattern\n";

#4 is the length of the DNA sequence
for(my $i=0; $i<=@tseq-4;$i++) {
  my $str = join('',@tseq[$i..$i+3]);
  foreach my $pattern qw(A... .T.. ..G. ...C) {
    if($str =~ /$pattern/) {
      my $position = $i+1;
      print "$position $pattern\n";
    }
  }
}

输出

position pattern
1 A...
1 .T..
1 ..G.
3 ..G.
3 ...C
4 A...