Forum Webscript.Ru

Программирование => Perl => Тема начата: Ardzhan от 31 Января 2005, 19:18:23

Название: Помогите с шаблоном Regexp
Отправлено: Ardzhan от 31 Января 2005, 19:18:23
Есть некоторый текст, заключенный в теги
:

12:30 Новости
12:50 Погода
13:00 Сериал


Если быть конкретным, то программка.
нужно все что между тегами prу привести к виду:

12:30Новости
12:50Погода
13:00Сериал

Причем нужно сделать это именно одной регуляркой...


$text="

12:30 ntst
34:56 ншек
23:12 рапов
";

$text=~s/(\\d{2}:\\d{2}){1} (.*)/\\\\\\\\$1\\\\<\\\\/td\\\\>\\\\$2\\\\<\\\\/td\\\\>\\\\<\\\\/tr\\\\>/gi;
print $text;

Но здесь проблема в том, что менять будет не только между тегами pre
Название: Помогите с шаблоном Regexp
Отправлено: Ardzhan от 31 Января 2005, 19:20:19
PS перед <> надо прослешить, форум, что-то код коверкает :(
Название: Помогите с шаблоном Regexp
Отправлено: NeoNox от 31 Января 2005, 19:39:18
use re \'debug\';
Название: Помогите с шаблоном Regexp
Отправлено: Ardzhan от 31 Января 2005, 19:42:26
и что дальше?
Название: Помогите с шаблоном Regexp
Отправлено: NeoNox от 31 Января 2005, 19:46:31
Ardzhan а дальше читать что тебе пишут.
Подсказка, ошибка тупая - сам будешь смеяться когда найдешь.
Название: Помогите с шаблоном Regexp
Отправлено: Ardzhan от 31 Января 2005, 20:03:29
так я ж и говорю, что эта регулярка заменит все, даже то, что вне тегов
... И отрабатывает она соответсвенно предполагаемому... А мне надо ее модифицировать, чтоб замену производила внутри 
..
			
Название: Помогите с шаблоном Regexp
Отправлено: NeoNox от 31 Января 2005, 20:12:41
Цитировать
use HTML::TokeParser;
$p = HTML::TokeParser->new(\\$text);

$temp = $p->get_text("pre", "/pre");
$temp =~ s/(\\d{2}:\\d{2})\\s+?(.*)/$1<\\/td>$2<\\/td><\\/tr>/gi;
print $temp;
Название: Помогите с шаблоном Regexp
Отправлено: Ardzhan от 31 Января 2005, 20:27:08
Ну не верю я, что такая задачка не решается одной регуляркой. Зачем мне модули подключать, я моги и так сделать:

$temp=~s/\\(.*?)\\<\\/pre\\>/$1/is)
$temp =~ s/(\\d{2}:\\d{2})\\s+?(.*)/$1<\\/td>$2<\\/td><\\/tr>/gi;

Те же яица, только в профиль... В том-то и заморочка, чтоб сделать именно одной регуляркой!!! Это уже просто вопрос принципа.
Название: Помогите с шаблоном Regexp
Отправлено: vladsu от 31 Января 2005, 21:00:54
Есть такая, прикольная, штуковина regexEvaluater.pl, но к сожалению линк дать не могу, парень видимо свалил с аркора, у меня есть она, если нужно могу намылить, если адрес дадите.
Название: Помогите с шаблоном Regexp
Отправлено: Ardzhan от 01 Февраля 2005, 12:56:03
Что за скрипт?
Название: Помогите с шаблоном Regexp
Отправлено: NeoNox от 01 Февраля 2005, 13:19:19
Цитировать
Ardzhan:
Ну не верю я, что такая задачка не решается одной регуляркой.

Верю-неверю это уровень детского сада. Есть идеи - пиши. Нет - слушай.
Цитировать
Ardzhan:
Зачем мне модули подключать, я моги и так сделать:
$temp=~s/
(.*?)
/$1/is)

Можешь. Велосипед тоже самолет, только летает низко.
Чтот твоя регулярка скажет на
 или < pre > или еще сотни две вариантов? Почитай кукбук перед тем как спорить
http://www.unix.org.ua/orelly/perl/cookbook/ch20_07.htm
Название: Помогите с шаблоном Regexp
Отправлено: Ardzhan от 01 Февраля 2005, 13:23:41
А мне и не надо обрабатывать сотни вариантов, мне надо именно