Xpoint
   [напомнить пароль]

Нумерация заменяемых наборов во время замены в рег. выражениях

Метки: [без меток]
[удл]
2004-04-28 11:29:48 [обр] Taras[досье]

Hi!!!
Имеем переменную содержащую текст. Например

 $abc = "123 456 789 123 457 679 123 000 002 003 123 368";

Имеем регулярное выражение

 $abc=~s/(123)/\[$1\]/g;

Т.е. во всем тексте набор "123" заменим на набор "[123]".

Задача:

  Надо чтоб перед каждым набором "[123]" ставился его номер в порядке
  возрастания слева на право. Т.е. к примеру мы бы в результате
  получили бы следующую строку:
 
$abc = "1:[123] 456 789 2:[123] 457 679 3:[123] 000 002 003 4:[123] 368";

Короче говоря пронумеровали каждый набор. Как такое сделать?
Буду благодарен за любые ответы.

спустя 41 минуту [обр] Закиров Руслан(12/343)[досье]
my $i=0;
$abc =~ s/(123)(?{$i++;})/$i:\[$1\]/gx;
спустя 23 минуты [обр] Taras[досье]

Ага...
Я уже тоже разобрался.
Только так будет правильнее наверно

$abc=~s/(123)(?{$var0++;})/$^R\:\[$1\]/g;

спустя 30 минут [обр] polk(19/185)[досье]

Не туда (http://xpoint.ru/forums/programming/perl/regexp/thread/25884.xhtml) написал :(

Первое что пришло в голову:

my $i=1;
$abc =~ s/(123)/join '',$i++,':[123]'/ge;
Powered by POEM™ Engine Copyright © 2002-2005