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 に答える