用Perl正则表达式中的部分单词替换

时间:2013-09-04 08:53:26

标签: regex perl

鉴于这两个文字:

$mir1 = 'microRNA-9a';
$mir2 =  'microRNA10a';
$mir3 =  'microrna3a';

我想将其更改为:

miR-9a
miR-10a
miR-3a

原则上我想用microRNA替换所有变体miR-部分 有没有单一的正则表达式呢?

我试过这个,但不知道如何捕获数字部分。

my $mirnew = $mir =~ s/microRNA(\d+)/miR-/gi;

3 个答案:

答案 0 :(得分:6)

您实际上并不需要捕获任何内容,只是不区分大小写取代microRNA和可选- miR-

s/microRNA-?/miR-/i;

答案 1 :(得分:3)

你需要捕获单词,而不是连字符后的数字。要反向引用捕获组,请使用$1

s/microRNA-?(\w+)/miR-$1/gi;

答案 2 :(得分:1)

s/\bmicrorna.*?([\d]+a)\b/miR-$1/ig