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


Автор: Ivan Kolesnikov 27.5.2005, 09:20
Мне нужно перевести в верхний регистр текст между строками /* и */.
Такой код работает не верно
Код

use strict;
my $t = 'aaa /* bbb */ ccc /* ddd */ eee';
$t =~ s/\/\*(.*)\*\//uc($1)/ge;
print $t . "\n";

Результат
Код

aaa  BBB */ CCC /* DDD  eee

Помогите пожалуйста

Автор: Ivan Kolesnikov 27.5.2005, 09:33
Нашел в Cookbook пример и понял как надо сделать:
Код

use strict;
my $t = 'aaa /* bbb */ ccc /* ddd */ eee';
$t =~ s/\/\*(.*?)\*\//uc($1)/ge;
print $t . "\n";

Автор: Kiber_rat 30.5.2005, 02:01
Маленький совет. Если нужно использовать в регулярном выражении много слэшей, то лучше воспользловаться альтернативным синтаксисом. В твоем примере:
Код

$t =~ s!/\*(.*?)\*/!uc($1)!ge;
# или так
$t =~ s[/\*(.*?)\*/][uc($1)]ge;

На любителя конечно, но по моему так более "читабельно" smile

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