鉴于这两个文字:
$mir1 = 'microRNA-9a';
$mir2 = 'microRNA10a';
$mir3 = 'microrna3a';
我想将其更改为:
miR-9a
miR-10a
miR-3a
原则上我想用microRNA
替换所有变体miR-
部分
有没有单一的正则表达式呢?
我试过这个,但不知道如何捕获数字部分。
my $mirnew = $mir =~ s/microRNA(\d+)/miR-/gi;
答案 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