给定以下输入:
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";
你没有考虑空间。
s/micro[\- ]RNA[\- ](\d)/miR-$1/gi;
或者
s/micro[\- ]RNA[\- ](?=\d)/miR-/gi;
尝试:
s/micro[- ]RNA[- ](\d+)/miR-$1/gi;
这表示单词可以用连字符或空格分隔。您的正则表达式说它们可以用连字符分隔或必须是连续的。
请试试这个..
空格可能出现在连字符之前和之后。
s/micro\s*-?\s*Rna\s*-?\s*(\d+)/miR-$1/igs