5
$dna = "ATCGTTGAATGCAAATGACATGAC";
while ($dna =~ /(\w\w\w)*?TGA/g) {  # note the minimal *?        
    print "Got a TGA stop codon at position ", pos $dna, "\n";
}

答えは次のとおりです。

18位にTGA終止コドンを持っている    
23位にTGA終止コドンを持っている

位置が 18 であるのに 8 ではないのはなぜですか? そして、次の23.どのように一致するか混乱していますか?試合の詳細情報は?

しかし、正しいコードは次のとおりです。

while ($dna =~ /\G(\w\w\w)*?TGA/g) {        
  print "Got a TGA stop codon at position ", pos $dna, "\n";
}

これは以下を出力します:

18位にTGA終止コドンを持っている

どのように?

4

3 に答える 3

1

使う必要は全くありません*?

$dna = "ATCGTTGAATGCAAATGACATGAC";
while ($dna =~ /(?:\w\w\w)TGA/g) {
    print "Got a TGA stop codon at position ", pos $dna, "\n";3.    
}

版画

8位にTGA終止コドンを持っている
18位にTGA終止コドンを持っている

*?前のアトムはオプションですが、実際には必須にしたいことに注意してください。

  • 非キャプチャ グループ (?: ...) は実際には必要ありません。通常のグループを使用できます。
  • 別のバリアントは/[TGAC]{3}TGA/g.
于 2013-08-19T09:43:27.923 に答える