Forum Webscript.Ru
Программирование => Perl => Тема начата: GrAfF от 13 Марта 2004, 16:13:19
-
Hi!
Помогите плиз, очень срочно нужно.
Пишу переформатилку текстов.
Код в основном состоит из строк вроде:
$text =~ s/\\n/
/g;
$text =~ s/ / /g;
То есть вся переменная много раз обрабатывается кучей регэкспов.
Нужно вместо чисел подставлять их длину их строки, то есть как-то заменять ([0-9]*) на length($1). Но, похоже, это не поддерживается.
Как при таком построении "движка" прикрутить обработку чисел?
-
Почитай про модификатор /e в perldoc perlre
А также по теме perldoc -f study
-
Спасибо, почитал. В первом нашел только часть Warning on \\1 vs $1, да и там ничего не понятно. Не настолько разбираюсь в регэкспах, чтобы понять о чем там. Да про study что-то вещают про скорость, время и частоту встречи букв в английском.
Такой простой вопрос был. Надеялся на четкий ответ. :(
-
$text="text 12345 another text 789 more text 999999999";
$text =~ s/([0-9]+)/length($1)/ge;
print "$text";
Так устроит? Тут тебе и модификатор е присутствует, который говорит о том, что правая часть рег. выражения это фрагмент выполняемого кода.
-
s/(\\d+)/length($1)/ge
-
Во первых вопрос мутный. Какой же ты хочешь четкий ответ? Вот зайди сюда perldoc.narod.ru, возьми pdf о регах на русском. Почитай. Вот пример http://forums.webscript.ru/showthread.php?s=&postid=93267 использования модификатора.
Во вторых на операторе study я не акцентировал внимание. Он не обязателен, хотя и может ускорить работу в твоем случае.
-
Регэкспы я ещё на "Парсинге XML" неплохо понял, но вот эта проблема меня поставила в тупик.
Усем огромное спасибо! ;)