Forum Webscript.Ru
Программирование => Perl => Тема начата: Yuraz от 05 Октября 2002, 11:17:02
-
Далал так, но это наверное долго и не правильно (файлы немного отличаются до и после)
open (HEAD, "message.html");
@head = ;
close (HEAD);
for($i=0;$i<@head;$i++){$message.=$head[$i];}
-
посмотри переменную $/
в ней хранится разделитель строк.
Запихни туда какой-то большой-твердый-знак и тода
$file= прочитает его за 1н раз
-
while()
{
$message .= $_;
}
-
{#начало блоке
undef local $/;# делаем неопределённой переменную $/ локально для данного блока
$var=; #считываем весь фаил в переменную
}# конец блока
#здесь переменная $/ принимает своё прежнее значение
#Тоже самое в чистом виде без комментариев
{
undef local $/;
$var=;
}
-
или даже так СМЫС комментариев не изменяется
{
local $/;
$var=;
}
-
Oak ,
USE ,
ююю ,
Ленивый гость ,
Спасибо всем за помощь.
Ещё вопросец не могу решить, может немного не по теме, но тоже с текстом связан, в общем есть в файле такой текст:
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Это нужный текст Это нужный текст Это нужный текст Это нужный текст Это нужный текст Это нужный текст Это нужный текст Это нужный текст
Реклама
Это не нужный текст
Конец рекламы
Это нужный текст Это нужный текст Это нужный текст Это нужный текст Это нужный текст Это нужный текст Это нужный текст Это нужный текст
Реклама
Это не нужный текст Это не нужный текст Это не нужный текст Это не нужный текст Это не нужный текст
Конец рекламы
Одиночная строка в тексте
Это нужный текст Это нужный текст Это нужный текст Это нужный текст Это нужный текст Это нужный текст Это нужный текст Это нужный текст
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
В ощем этот файл я запихнул в переменную, и теперь надо вырезать места от слова "Реклама" до слова "Конец рекламы", с находящимся внутри текстом, что у меня и получается этим способом:
$text =~ s/Реклама(.|\\n)*Конец рекламы//g;
только одно но, вырезается от первого слова "Реклама" до последнего "Конец рекламы", а как сделать до близжайшего?
И потом вырезать одиночные строчки, типа строки "Одиночная строка в тексте" , где может так же быть произвольный текст,.... для чего, не могу придумать регулярное выражение. ... Одно условие, что одинокая строка не соприкасается с блоком текста.
-
только одно но, вырезается от первого слова "Реклама" до последнего "Конец рекламы", а как сделать до близжайшего?
$text =~ s/Реклама(.|\\n)*[b]?[/b]Конец рекламы//g;
нужно поставить знак вопроса. он и будет говорить регулярному выражению, чтобы брать до первого возможного совпадения.
-
Одно условие, что одинокая строка не соприкасается с блоком текста.
приведи приди пример.
-
USE чейчас проверю, вот пример к строке:
Блок текста это если более 2х строк, а в одинокой строке - одна строка, потом перевод строки, т.е. символ \\n , т.е. можно проверить \\n\\n 1 строка \\n\\n, значит надо удалить. если так, то не надо (т.е. это уже блок)
\\n\\n 1 строка\\n 2 строка\\n 3 строка \\n\\n
-
И потом вырезать одиночные строчки, типа строки "Одиночная строка в тексте
USE , спасибо, пример аналогичный первому, так что не сложно стало, спасибо!
-
USE , спасибо, пример аналогичный первому, так что не сложно стало, спасибо!
[off]я рад если смог помочь.[/off]