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


ru.cgi.perl

 
 - RU.CGI.PERL ------------------------------------------------------------------
 From : Artem Chuprina                       2:5020/371.32  24 Nov 2000  13:25:20
 To : ace@lglobus.ru
 Subject : Re: Помогите с REGEXP'ом...
 -------------------------------------------------------------------------------- 
 
 alr> From: "Eugene V. Sofronov" <ace@lglobus.ru>
 
 alr> Приветы!
 
 alr> %SUBJ%, пожалуйста! REGEXP нужен для следующей цели - есть файл формата:
 alr> === BEGIN ===
 alr> TITLE#1:
 alr> ORIGINAL#1 - NAME#1 (SHORTNAME#1) /DESCRIPTION#1/
 alr> ....
 
 alr> TITLE#2:
 alr> ORIGINAL#2 - NAME#2 (SHORTNAME#2) /DESCRIPTION#2/
 alr> ....
 alr> === END ===
 alr> Для ясности -  это список вещей, разделенных на классы (Swords, Daggers,
 alr> etc.) Каждая запись - отдельная строка в файле, т.е. с \r\n в конце.  В
 alr> поле 'TITLE' находится название класса, 'ORIGINAL' - оригинальное
 alr> название, 'NAME' - английское название, 'SHORTNAME' - сокращенное
 alr> английское название, 'DESCRIPTION' - описание или параметры. Все скобки и
 alr> разделители соблюдаются как в примере. Hадо все это хозяйство разложить
 alr> на переменные. 
 alr> Я ищу поле 'TITLE' так:
 alr> === BEGIN ===
 alr> next if ($_ eq '');
 alr> $str_len = length($_);
 alr> $last = substr($_, $str_len-1, $str_len-2);
 alr> $title = substr($_, 0, $str_len-1);
 alr> === END ===
 alr> Если ($last eq ':'), то у нас 'TITLE' = $title. Первая строка отсекает
 alr> пустые записи в файле. Хотелось бы покрасивше, только в голову не лезет
 alr> ничего.  А вот с остальным проблема: поле 'ORIGINAL' может не подчиняться
 alr> правилу \w+, ибо может являться любым другим языком, отличным от
 alr> английского и русского.  А поле 'SHORTNAME' может вообще отсутствовать, в
 alr> этом случае надо присвоить ему значение 'NAME', записанное в верхнем
 alr> регистре. Я попробовал решить в лоб:
 alr> /^(.*)\s-\s(.*)\s\((.*)\)\s\/(.*)\//;
 alr> $name = $1; $eng_name = $2; $eng_short = $3; $attr = $4;
 alr> но скрипт стал загружаться бесконечно. Дальнейшие попытки расчленить этот
 alr> REGEXP привели к неутешительным результатам. Как правильно записать
 alr> REGEXP?
 
 Уж если писать _в лоб_, то 
 
 ^(\S+)\s-\s([^(]+)\s\(([^)]+)?\)\s\/([^/]+)\/
 
 Hет?
 
 -- 
 Счастливо!
   Ран.
 --- ifmail v.2.14.os-p7-tma3
  * Origin: MemoNet (2:5020/371.32@fidonet)
 
 

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

 Тема:    Автор:    Дата:  
 Re: Помогите с REGEXP\'ом...   Artem Chuprina   24 Nov 2000 13:25:20 
Архивное /ru.cgi.perl/17121336cdb53.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional