|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : denis v. yastrebov 2:5020/400 01 Jul 2003 20:03:39 To : Alexandr Boydak Subject : Re: White Space -------------------------------------------------------------------------------- Alexandr You wrote to denis v. yastrebov on Mon, 30 Jun 2003 20:32:14 +0400: dy>> Hу и вот Вам рецепт. AB> dy>> ===CODE======================= dy>> use locale; dy>> use POSIX qw (locale_h); dy>> setlocale(LC_CTYPE, "Russian_Russia.1251"); # Это моя dy>> платформа, свою укажите сами AB> dy>> $str = "В. В. Пупкин"; dy>> print "Original: ".$str."\n"; dy>> $str =~ s/(\w.)\s*(\w.)\s*(\w+)/$1~$2~$3/; # пробелы dy>> все-таки надо ставить!!! AB> AB> Hе факт... см. ГОСТ AB> dy>> print "Substituted: ".$str; dy>> ===CODE END=================== AB> AB> Ладно, меняем входные условия... и получаем: AB> AB> Original: и т. д. по нарастающей AB> Substituted: и т.~д.~по нарастающей AB> AB> Ы-ы? AB> AB> И как быть с такими сокращениями, как "и т.д.", их ведь AB> тоже твой участок кода за инициалы примет? Как он учитывает AB> прописные буквы? Учитесь правильно ставить задачи. Что было написано: AB> Строка передается из программы DTP, например "В. В. Пупкин", и надо обеспечить AB> анализ строки, уборку пробела между инициалами, и вставку некоего "символа" AB> неразрывного пробела (неважно какого, хоть " ", потом вызывавшая программа AB> сама переведет в нужный вид в нужных терминах эту конструкцию) между инициалами AB> и фамилией. Естественно, такие вещи проще всего и быстрее делать на сабже AB> регулярными выражениями, я думаю, вы со мной согласитесь. Решение было предложено. Если же, Одно дело -- написать макрос для VIm, которому Вы будете предлагать то, что отберете сами, другое -- анализировать целостный входной поток. В этом случае задача выливается в синтаксический анализатор с возможностями экспертной системы. Почему? Ответьте себе сами. Может, кто-то и сможет уместить обработку всех возможных ситуаций в десяток строк, тогда я охотно и сам воспользуюсь результатом. AB> И, наверное, ты не понял. Мне нужно РАСШИРИТЬ список AB> символов, понимаемых регекспами перла как пробельные (white AB> space): либо набором многосимвольных строк, либо, на худой AB> конец, несколькими символами. То есть, грубо говоря, чтобы AB> пробельными символами перл считал не только пробел, AB> табуляцию и т.д., а еще и такие многосимвольные AB> конструцкции, как "<b>" и "</b>", к примеру. Или еще AB> символы с кодами 145, 146, 147 (dec). Причем HЕ УДАЛЯТЬ, а AB> считать их пробельными и оставлять как есть. В один регэксп этого не сделать. Поищите, может исполнители найдутся во-первых и возьмут немного во-вторых. Проблема пределов возможной автоматической обработки авторского набора в свое время обсуждалась в ru.tex. Почитайте ее архив. Я с тех пор пользуюсь решением В. Вагнера и в поисках большего не рыпаюсь. ---- denis v. yastrebov denisy@psychiatrist.ru http://www.psychiatrist.ru -- Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru --- ifmail v.2.15dev5 * Origin: Talk.Mail.Ru (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/64888727cf4b.html, оценка из 5, голосов 10
|