2013-09-04 2 views
2

Учитывая это два текста:Подставив часть слов в 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

Вам необходимо записать слова, а не цифры после дефиса. Чтобы backreferecence захватить группу, вы используете $1:

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

[Дон 't использовать '\ 1', использовать' $ 1'] (http://perldoc.perl.org/perlre.html#Warning-on-\1-Instead-of-$1). – TLP

+0

@TLP. Благодарю. Отредактировано: –

6

Вы на самом деле не нужно, чтобы захватить что-нибудь, только случай нечувствительно заменить microRNA и дополнительный - с miR-:

s/microRNA-?/miR-/i; 
Смежные вопросы