Главная страница


ru.cgi.perl

 
 - RU.CGI.PERL ------------------------------------------------------------------
 From : Eugene V. Sofronov                   2:5020/400     24 Nov 2000  01:53:02
 To : All
 Subject : Помогите с REGEXP'ом...
 -------------------------------------------------------------------------------- 
 
 Приветы!
 
 %SUBJ%, пожалуйста! REGEXP нужен для следующей цели - есть файл формата:
 === BEGIN ===
 TITLE#1:
 ORIGINAL#1 - NAME#1 (SHORTNAME#1) /DESCRIPTION#1/
 ....
 
 TITLE#2:
 ORIGINAL#2 - NAME#2 (SHORTNAME#2) /DESCRIPTION#2/
 ....
 === END ===
 Для ясности -  это список вещей, разделенных на классы (Swords, Daggers, etc.)
 Каждая запись - отдельная строка в файле, т.е. с \r\n в конце.
 В поле 'TITLE' находится название класса, 'ORIGINAL' - оригинальное название,
 'NAME' - английское название, 'SHORTNAME' - сокращенное английское название,
 'DESCRIPTION' - описание или параметры. Все скобки и разделители соблюдаются
 как в примере. Hадо все это хозяйство разложить на переменные. 
 Я ищу поле 'TITLE' так:
 === BEGIN ===
 next if ($_ eq '');
 $str_len = length($_);
 $last = substr($_, $str_len-1, $str_len-2);
 $title = substr($_, 0, $str_len-1);
 === END ===
 Если ($last eq ':'), то у нас 'TITLE' = $title. Первая строка отсекает пустые
 записи в файле. Хотелось бы покрасивше, только в голову не лезет ничего.
 А вот с остальным проблема: поле 'ORIGINAL' может не подчиняться правилу \w+,
 ибо может являться любым другим языком, отличным от английского и русского.
 А поле 'SHORTNAME' может вообще отсутствовать, в этом случае надо присвоить
 ему значение 'NAME', записанное в верхнем регистре. Я попробовал решить в лоб:
 /^(.*)\s-\s(.*)\s\((.*)\)\s\/(.*)\//;
 $name = $1; $eng_name = $2; $eng_short = $3; $attr = $4;
 но скрипт стал загружаться бесконечно. Дальнейшие попытки расчленить этот
 REGEXP привели к неутешительным результатам. Как правильно записать REGEXP?
 Заранее спасибо!
 -- 
 Eugene V. Sofronov /      E-Mail: ace@lglobus.ru       / ICQ UIN : 17269496
 E-Mail redirector: jackal-sr13@mail.ru (always up)            -=/ SR 13 /=-
 --- ifmail v.2.15dev5
  * Origin: -=/ SR 13 /=- (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Помогите с REGEXP\'ом...   Eugene V. Sofronov   24 Nov 2000 01:53:02 
 Помогите с REGEXP\'ом...   Alan Long   24 Nov 2000 12:37:30 
Архивное /ru.cgi.perl/9242ceb6f537.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional