Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Регулярные выражения > Замена значений в формуле


Автор: Error202 7.7.2010, 13:50
Есть строка:

Код

...тант СемЭн! #М$ощностью #sila$ может уйти #2+4/(75 + sila) - a24$ стоп...


В кусках #...$ может быть просто переменная или выражение
Мне нужно, переменную, или переменную, встречающуюся в выражении заменить на $VAR{переменная}, а цифры и знаки не трогать...
чтобы получилось:

Код

...тант СемЭн! $VAR{'М'}ощностью $VAR{'sila'} может уйти 2+4/(75 + $VAR{'sila'}) - $VAR{'a24'} стоп...


как такое можно сделать?

P.S. С простыми переменными жделал так, а вот с выражениями засада... 
И если просто цифра, то она тоже переводится в $VAR, а этого не надо
Код

 ~s/\#([a-zA-Zа-яА-Я0-9\_]+?)\$/\$VAR{'$1'}/g;

Автор: JAPH 17.7.2010, 15:21
Еще актуально?

Одной регуляркой не получилось. Хотя, это как посмотреть:
Код
s/#((?>[^\$]*))\$/(local $_ = $1) =~ s!([a-z]\w*)!\$VAR{'$1'}!ig; $_/gie;


Не знаю, как оно на русские буквы отреагирует...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)