1

给定以下输入:

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";
4

3 回答 3

4

你没有考虑空间。

s/micro[\- ]RNA[\- ](\d)/miR-$1/gi;

或者

s/micro[\- ]RNA[\- ](?=\d)/miR-/gi;
于 2013-09-17T01:22:57.603 回答
4

尝试:

s/micro[- ]RNA[- ](\d+)/miR-$1/gi;

这表示单词可以用连字符或空格分隔。您的正则表达式说它们可以用连字符分隔或必须是连续的。

于 2013-09-17T01:24:07.743 回答
1

请试试这个..

空格可能出现在连字符之前和之后。

s/micro\s*-?\s*Rna\s*-?\s*(\d+)/miR-$1/igs
于 2013-09-17T05:28:31.170 回答