我有像
这样的dna字符串tcatttcaaatcatctggaccaaaagagtcaggaagtaactcttctatcgttttcatatcataacccccgt
cgtcatgaaacatataaacatttatatccttcgaaaattcacgaattacttgacgacaaataccacagggc
gtaactcttcccttggcactcatcactccaatagccataaatttagtgtaacccatgctcactgcttttgt
aattgctactcgttcggcacagatgcaattgccatatgatgcgttttcaacattagctccataaatatatg
tatttttatcgtcggatactacgcatgcacctactgcgaagttggagtagggacaatatgaatattgtaaa
ctctcttttacttcttgaaataacttctcaatatcttctttttccat
(除了一个没有休息的长强)
现在我要将所有a
替换为t
,将t
替换为a
,将c
替换为g
,g
到c
如何使用正则表达式?
答案 0 :(得分:2)
您可以使用子程序:
sub complement {
my ($seq) = @_;
$seq =~ tr/ACGTacgt/TGCAtgca/;
return $seq;
}
并称之为:
my $complemented_string = complement($string);
答案 1 :(得分:2)
您应尽可能明确地提出问题。要求使用正则表达式的解决方案误导所有人。
从Perl 5的第14版开始,您可以在/r
上使用tr///
修饰符返回修改后的字符串,而不是在原地更改值。如果你想保留原始和倒置的DNA序列,它可能是最好的解决方案。
这个简短的程序显示了一个例子。请注意,tr///
doe 不使用正则表达式。
use strict;
use warnings;
use 5.014;
my $seq = 'tcatttcaaatcatctggaccaaaagagtcaggaagt';
my $inv = $seq =~ tr/atcg/tagc/r;
say $seq;
say $inv;
<强>输出强>
tcatttcaaatcatctggaccaaaagagtcaggaagt
agtaaagtttagtagacctggttttctcagtccttca
答案 2 :(得分:0)
直接使用shell命令tr
,如果您想尝试。
tr "atcg" "tagc" < file