给出以下输入:
micro RNA 155
micro-RNA-155
我想对它们进行规范化,使它们都返回:
miR-155
但为什么这个正则表达式不起作用
#!/usr/bin/perl
my $mirn = $ARGV[0];
$mirn =~ s/micro-?RNA-?(\d+)/miR-$1/gi;
print "$mirn\n";
答案 0 :(得分:4)
你没有考虑这些空间。
s/micro[\- ]RNA[\- ](\d)/miR-$1/gi;
或
s/micro[\- ]RNA[\- ](?=\d)/miR-/gi;
答案 1 :(得分:4)
尝试:
s/micro[- ]RNA[- ](\d+)/miR-$1/gi;
这表示单词可以用连字符或空格分隔。你的正则表达式说它们可以用连字符分隔,或者必须是连续的。
答案 2 :(得分:1)
请试试这个..
空间可能来临之前&连字符后..
s/micro\s*-?\s*Rna\s*-?\s*(\d+)/miR-$1/igs