|
|
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) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.cgi.perl/9242ceb6f537.html, оценка из 5, голосов 10
|