多个不匹配的语法是什么,即。 Perl中的点运算符(。)? 我需要将DNA序列与靶序列匹配,允许3个不匹配。 那将是什么语法?
例如,让DNA序列ATGC和靶序列为ATGAGCA。匹配后,我的结果应如下所示:
position no : pattern
1 A...
1 .T..
1 ..G.
3 ..G.
3 ...C
4 A...
答案 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...