Главная » Просмотр файлов » regulyarnyie-vyirazheniya-osnovyi

regulyarnyie-vyirazheniya-osnovyi (852744), страница 19

Файл №852744 regulyarnyie-vyirazheniya-osnovyi (Пособие по регуляркам) 19 страницаregulyarnyie-vyirazheniya-osnovyi (852744) страница 192021-10-05СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 19)

9.1. Отображение файла r ime. h tml в браузере FirefoxПреобразование простоrо текста с помощью PerlНиже будет показано, как разметить простой текст тегами HTML с помощью Perl. Каки в случае примеров, в которых использовался редактор sed, сначала будут представленыодиночные команды, и уже после этого мы соберем их в одном командном файле.В этой книге вводятся лишь самые элементарные средства Perl и способыих использования. Это не учебник и не руководство по использованию язы­ка Perl, но я надеюсь, что мне удастся пробудить в вас интерес к этому языкуи продемонстрировать некоторые его возможности.

Если вы хотите изучитьPerl, то вам имеет смысл начать с посещения учебного сайта Perl по адресуhttp: / / learn. perl. org, на котором также описана процедура установкисоответствующего проrраммного обеспечения.108Глава 9. Разметка документа тегами HTMLSЕсли текущей строкой($.) является строка l, назначьте всю строку($_) переменной$title и выведите ее.perl -пе 'if ($. == 1) {chomp($title $ ) ; print�"<hl>" . $title .

"</hl>" ."\n";};'rime.txtВ случае успешного выполнения этой команды результат должен быть таким:<hl>THE RIME OF ТНЕ ANCYENT МARINERE, IN SEVEN PARTS.</hl>Ниже приведено описание работы этой команды Perl.•••Проверить с помощью функции$, является ли строка l текущей.Захватить строку $( _) и назначить ее переменной $t it l е. Когда функцияchomp захватывает строку, она удаляет из нее концевой символ новой строки.Вывести переменную $title в составе элемента hl, добавив в конце сим­вол новой строки (\n).Для получения более подробной информации о таких встроенных функцияхPerl, как$., выполните команду perldoc -v $.( обычно perldoc устанав­ливается одновременно с Perl). Если это не сработает, обратитесь к разделу"На заметку':Чтобы добавить в начало файла разметку, включая тег hl, выполните следующую ко­манду.perl -пе 'if ($.

== 1) {chomp($title = $_) };print "<!DOCTYPE html>\<html xmlns= \"http://www.wЗ.org/1999/xhtml\">\<head>\<title>$title</title>\<meta charset= \"utf-8\"/>\</head>\<body>\<hl>$title</hl>\n" if $. == 1; exit' rime.txtВ результате вы получите следующий вывод.<!DOCTYPE html><html xmlns= "http://www.wЗ.org/1999/xhtml"><head><title>THE RIМE OF ТНЕ ANCYENT МARINERE, IN SEVEN PARTS.</title><meta charset=\"utf-8\"/></head><body><hl>THE RIME OF ТНЕ ANCYENT МARINERE, IN SEVEN PARTS.</hl>Функция print выводит последующие теги, и за каждой строкой следует символ\, который вводит символ новой строки в выходной поток.

Содержимое переменной$title помещается в элементы title и hl.Гnава 9. Разметка документа тегами HTMLS109Обработка римских цифр с помощью PerlЧтобы снабдить тегами заголовок и римские цифры, которыми обозначаются разделы, выполните следующую команду:perl -ne 'print if s/ л (ARGUМENT\. II{O,З}V?I{0,2}\.)�$/<h2>\1<\/h2>/;' rime.txtВот ее вывод.<h2>ARGUМENT.</h2><h2>I.</h2><h2>II.</h2><h2>III.</h2><h2>IV.</h2><h2>V.</h2><h2>VI.</h2><h2>VII.</h2>Команда подстановки (s) захватывает заголовок ARGUMENT и семь римских цифр от Iдо VII в верхнем регистре, каждый раз дополняя захваченный текст точкой в конце и за­ключая его в элемент h2.Обработка отдепыоrо абзаца с помощью PerlПроверив, что номер строки равен 5, заключите вступительный абзац в элемент рс помощью следующей команды:perl -ne 'if ($.

== 5) {s/ л ([A-Z].*)�$/<p>$1<\/p>/;print;}' rime.txtРезультат ее применения должен быть таким.<p>How а Ship having passed the Line was driven Ьу Stormsto the cold Country towards the South Pole; and how fromthence she made her course to the tropical Latitude of theGreat Pacific Ocean; and of the strange things that befell;and in what manner the Ancyent Marinere came back to hisown Country.</p>Обработка строк поэмы с помощью PerlПриведенная ниже команда вставляет открывающий тег р в начале первой строкипоэмы, а тег Ь r - в конце этой строки.perl -ne 'if ($.

== 9) {s/ л [ ]*(.*)/ <p>$1<br\/>/;�print;}' rime.txtВ результате мы получаем такую строку:<p>It is an ancyent Marinere,<br/>Следующая команда Perl преобразует строки с номерами от 1 О до 832, добавляя тегbr в конце каждой строки:perl -ne 'if (10 .. 832) { s/ л ([ ]{5,7}.*)/$1<br\/>/;�print;}' rime.txt110Гnава 9. Разметка документа тегами HTMLSНиже в качестве примера приведена часть преобразованного текста.Farewell, farewell! but this I tell<br/>То thee, thou wedding-guest! < br/>Не prayeth well who loveth well < br/>Both man and bird and beast.

<br/>Добавим закрывающий тег р в конце последней строки поэмы:perl -ne 'if ($. == 833) {s/ л (.*)/$1 < \/р>/; print;)' rime.txtВот как выглядит результат:Не rose the morrow morn. < /p>Замените пустые строки в конце каждой строфы тегами br:perl -ne 'if (9..eof) {s/ л $/ < br\/>/; print;)' rime.txtчто приведет к показанному ниже результату.< br/>Не prayeth best who loveth best,All things both great and small:For the dear God, who loveth us,Не made and loveth all.< br/>The Marinere, whose еуе is bright,Whose beard with age is hoar,Is gone; and now the wedding-guestTurn'd from the bridegroom's door.< br/>И в завершение выведем пару тегов по достижении конца файла:perl -ne 'if (eof) {print " < /body>\n < /html>\n");' rime.txtГораздо легче организовать работу всего кода, объединив его в одном файле, к чемумы сейчас и переходим.Испоnьзование командноrо файnа в PerlНиже приведен листинг файла html.pl, который содержит команды, преобразующиефайл rime.txt в НТМL-документ с помощью Perl.

Выноски помогут вам проследить затем, что происходит в данном сценарии.# ! /usr/Ьin/perl -р Оif ($ • == 1 ) { 8chomp ($title = $_);)print " <! DOCTYPE html>\ @< html xmlns = \"http://www.w3.org/1999/xhtml\">\< head>\< title>$title < /title>\< meta charset=\"utf-8\"/>\</head>\< body>\Глава 9. Разметка документа тегами HTMLS111<hl>$title</hl>\n" if $.

== 1;s/ л (ARGUМENTII{0,3}V?I{0,2})\.$/<h2>$1<\/h2>/; Оif ($. == 5 ) { 0s/ л ([A-Z] .*)$/<р>$1<\/р>/;}if ($. == 9 J { Фs/ л [ ]*(.*)/ <p>$l<br\/>/;}if (10 .. 832) { &s/ л ([ ]{5,7} .*)/$l<br\/>/;}if (9 ..eof) { Оs/ л $/<br\/>/;}if ($. == 833) { 0s/ л (.*)$/$1<\/p>\n <\/body>\n<\/html>\n/;}О Первая пара символов ( # ! - магическая строка) указывает интерпретатору ко­манд на то, что данный файл является программой; оставшаяся часть первой стро­ки задает местоположение программы, которую вы хотите выполнить.8 Если текущая строка ($.) является строкой 1, назначить всю строку ($_) пере­менной $ti tle, попутно удаляя последний символ строки (символ новой строки)с помощью функции chomp.О Вывести тип документа и некоторые НТМL-теги в начале документа в строкеи повторно использовать значение переменной $ti tle в нескольких местах.8 Поместить заголовок ARGUMENT и римские цифры в элементы h2.О Окружить вступительный абзац тегами р.0 Вставить открывающий тег р в начале первой строки стиха, а тег br - в концеэтой строки.& Вставить тег br в конце каждой строки, за исключением последней.О Заменить каждую пустую строку после строки 9 тегом br.0 Вставить в конце последней строки закрывающие теги р, body и html.Чтобы выполнить данную программу, введите следующую команду:perl html.pl rime.txtВы также можете воспользоваться возможностью перенаправления для сохранениявывода в файле с помощью выражения а >.

Следующая глава завершает данное краткоеруководство по регулярным выражениям.О чем вы узнаяи в rяаве 9• Как использовать редактор sed в командной строке.• Как вставить, заменить и присоединить текст (теги) с помощью редактора sed.• Как использовать Perl для выполнения тех же операций.112Гnава 9. Разметка документа тегами HTMLSНа заметку• Утилита AsciiDoc (http://www.methods. со.nz/asciidoc), написанная Стю­артом Рэкхемом, позволяет конвертировать обычные текстовые файлы в форма­ты HTML, PDF, ePUB, DocBook и тап с помощью процессора Python. Синтаксисдля текстовых файлов аналогичен синтаксису Wiki и Markdown и обеспечиваетгораздо более быструю подготовку документов по сравнению с ручным кодирова­нием тегов HTML или ХМL.• Символ подчеркивания может применяться только в документах XML, но неHTML. Кроме того, диапазон символов, использование которых в именах допуска­ется стандартом ХМL, намного шире того, который представлен набором ASCII.Более подробно об использовании символов в именах ХМL можно прочитатьпо адресу http://www.wЗ.org/TR/REC-xml/#sec-common-syn.• Если команда perldoc не сработает, в вашем распоряжении есть альтернативныеварианты.

Прежде всего, можете прочитать онлайновую документацию на сайтеhttp://perldoc.perl. org. (Например, для того чтобы узнать больше о пе­ременной $., откройте страницу http://perldoc.perl.org/perl var.html#VariaЫes-related-to-filehandles.) Если вы работаете на компьюте­ре Мае, попробуйте использовать версию perldoc5 .12. Если вы установилиPerl из ActiveState, то эта версия должна находиться в каталоге /usr/local/Active Ре r1-5 .ХХ/Ьin. В случае установки путем компиляции исходного кода какperl, так и perldoc устанавливаются в каталоге /usr /local /Ьin. Чтобы perlи perldoc запускались, добавьте путь /usr/local/Ьin в переменную РАТН. Бо­лее подробную информацию относительно установки значений переменной РАТНможно получить по адресу http://java.com/en/download/help/path. xml.Глава 9. Разметка документа тегами HTMLS113ГЛАВА 10Конец начаnа"UNIX не был создан для того, чтобы не датькому-то делать глупости, ведь это помешало быумным людям делать умные вещи".- Дуглас ГвинПримите поздравления в связи с тем, что у вас хватило терпения дочитать книгудо этой страницы.

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6363
Авторов
на СтудИзбе
310
Средний доход
с одного платного файла
Обучение Подробнее