次の入力があるとします。
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