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

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

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

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

Если вы являетесь пользователем Windows,то можете получить доступ к Perl, установив соответствующие пакеты Cygwin(www.cygwin.com) или загрузив самый последний пакет Perl на сайте ActiveState(http://www. acti vestate.com/acti veperl/downloads). Инструкцииотносительно установки Perl можно получить на следующих сайтах: http://learn.perl. org/installing/ или http://www.perl.org/get.html.Чтобы выяснить, установлен ли Perl в вашей системе, воспользуйтесь приведеннойниже командой. Для этого откройте окно командной строки или интерпретатора команд,например окно Terminal (воспользуйтесь меню Applications/Utilities) на компьютере Маеили окно командной строки Windows (откройте стартовое меню и введите cmd в тексто­вом поле в нижней части меню). Затем введите следующую команду:perl -vЕсли Perl действительно установлен в вашей системе, эта команда вернет ин­формацию об установленной версии.

На своем компьютере Мае, работающемпод управлением OS Х Lion, я установил самую последнюю версию Perl (5.16.0на момент написания книги) путем компиляции исходного кода (ht tp:/ /www.cpan.org/src/5. O/perl-5.16. О. tar.gz). После выполнения приведенной вышекоманды я получил следующую информацию.This is perl 5, version 16, subversion О (v5.16.0) builtfor darwin-21evelCopyright 1987-2012, Larry WallPerl may Ье copied only under the terms of eitherthe Artistic License or the GNU General PuЬlic License,which may Ье found in the Perl 5 source kit.Complete docшnentation for Perl, including FAQ lists,should Ье found on this system using "man perl" or"perldoc perl".

If you have access to the Internet,point your browser at http://www.perl.org/,the Perl Home Page.Отсюда видно, что после компиляции и сборки исходного кода как perl, таки perldoc устанавливаются в каталоге /usr/local/bin, который можно добавитьв список путей, хранящийся в системной переменной РАТН. Более подробную информа­цию относительно установки или изменения значения переменной РАТН можно найтипо следующему адресу:http://java.com/en/download/help/path.xml42Глава 2.

Сопоставление с простыми шаблонамиГЛАВА 3ГраницыВ этой главе мы сосредоточимся на позиционных привязках. Привязки соответству­ют не каким-либо символам, а условным границам, разделяющим символы, т.е. опре­деленным позициям между символами, в связи с чем их называют условиями с нулевойдлиной совпадения (zero-width assertions). Некоторые границы, такие как " и $, называютякорными метасимволами или просто якорями.В этой главе буд ут рассмотрены следующие границы:• начало и конец логической или физической строки;• границы слов (два вида);• начало и конец подстроки;• границы строковых литералов.На первых порах моим инструментом вновь будет приложение RegExr. Кроме того,я буду использовать тот же текст, что и до этого: первые 12 строк содержимого файлаrime.txt. Откройте в браузере веб-приложение RegExr (http://www. regexr.

com/vl /)или воспользуйтесь его настольной версией и скопируйте первые 12 строк файла rime.txtиз архива кода в нижнее текстовое поле (рис. 3.1).Начапо и конец строкиКак вы уже не раз видели, для поиска совпадений с началом логической или физиче­ской строки используется метасимвол" (U+OOSE), или циркумфлекс ("крышка"):В зависимости от контекста метасимвол " будет совпадать с началом логической илифизической строки, а иногда и целого документа. Конкретные свойства контекста зави­сят от приложения и используемых опций.Вы уже знаете, что для поиска совпадений с концом строки используется знак доллара:$Убедитесь в том, что в приложении RegExr установлены флажки multiline (мноrо­строчный режим) и dotall (точке соответствуют границы строк). При открытии при­ложения RegExr флажок global (глобальный режим) установлен по умолчанию, нодля данного примера безразлично, установлен он или нет.

При снятом флажке globalвесь целевой текст считается одной строкой, а при снятом флажке dotall точке ( . ) будутсоответствовать все символы, кроме символов конца строки (\n и \r).RegExrSample.sReplaaH•tch"'How. *Country\.si!!_ globalCommunrtyshow •О� fgnore.CaseLJ extended� dotalli:!..J multilineТНЕ RIME OF ТНЕ ANCYENT MARINERE. IN SEVEN PARTS.ARGUMENТ,\w\dHow а Sh1p hav1ng p•ssed the Une was driven Ьу Storms to the coldCountry towards the South Pole1 and how from thence she made her courseto the tropical Latltude of t:he Gгeat P11cific Oce.an1 вnd of the stranget:hings thвt befall1 and ln wtiat mo1nner l:he An�ent Marinere came back tohis own Country.\О!.['АВС]4Му Save.dIt 1s an o11ncyent M.1rinere,And he stoppetf, one of thraa:"Ву thy long grey beard and thy glittering eve"Now ...tierefor• stoppest me"\s\S[АВС][•·•]patt..rn: "'How.

•countryflags: gsrnО captunng groups1_ .ьЬ.t�1osnnercomРис. 3.1. Окно автономного приложения RegExrВведите в верхнем текстовом поле следующее регулярное выражение:лнow.*Country\.$Этому выражению будет соответствовать вся строка, начиная со слова How. Обратитевнимание на то, что точке в конце выражения предшествует обратная косая черта, кото­рая экранирует ее и тем самым превращет из метасимвола в обычный литерал. Если бымы этого не сделали, чему она соответствовала бы? Любому символу. Если вам надо ука­зать соответствие литеральной точке, обязательно экранируйте ее или включите в сим­вольный класс (подробнее об этом - в главе 5).Что произойдет, если мы снимем флажок multiline? Исчезнет цветовое выделение тек­ста.

Оставив этот флажок снятым, а флажок dotall установленным, введите в верхнемтекстовом поле следующее выражение:лТНЕ.*\?$и вы увидите, что ему соответствует весь текст.Опция dotall означает, что в дополнение ко всем прочим символам точке будут соот­ветствовать также символы новой строки. Снимите флажок dotall, и для данного выра­жения в тексте вновь не будет найдено совпадений. При этих же условиях следующемувыражению будет соответствовать первая строка.лТНЕ.*44Глава 3. ГраницыВновь установите флажок dotall, и последнему выражению станет соответствоватьвесь текст. Для совпадения с оставшейся частью текста включать \?$ в регулярное выра­жение не потребовалось.Позиции, явпяющиеся и не явпяющиеся границами сповВы уже видели несколько случаев использования метасимвола \Ь.

Он обозначает гра­ницу слова, т.е. позицию между словом и пробелом. Введите следующее выражение:\ЬТНЕ\Ьи оно совпадет с двумя вхождениями слова ТНЕ в первой строке (при условии, что уста­новлен флажок global). Как и метасимволы л и$, метасимвол \Ь относится к категорииусловий с нулевой длиной совпадения. Вы можете включать его в выражения для поискатаких, например, объектов, как пробел или начало строки, но то, с чем он совпадает, на са­мом деле не представляет собой никакого символа. Вы обратили внимание на то, что про­белы, окружающие второе слово ТНЕ, остались невыделенными? Так произошло потому,что они не оказываются частью найденного соответствия.

Возможно, вам трудно уловитьсуть сказанного с первого раза, но после некоторой практики вам все станет понятно.Также существуют позиционные привязки, отличные от границ слов, к которым, на­пример, относятся позиции между буквами или цифрами в слове. Введите в верхнем тек­стовом поле следующее выражение:\Бе\Би посмотрите, с чем оно совпадает (рис. 3.2). Вы увидите, что ему соответствуют те буквые нижнего регистра, которые окружены другими буквами или символами, не являющи­мися границами слов. Поскольку это условие с нулевой длиной совпадения, оно не ищетсовпадения с окружающими символами, но способно распознавать те литералы е, кото­рые окружены границами, не являющимися границами слов.В некоторых приложениях границы слов указываются иначе.

Например, для указанияначала слова используется такая последовательность:\<а для указания конца слова - такая:\>Это пример устаревшего синтаксиса, который не применяется в современных прило­жениях, работающих с регулярными выражениями. В некоторых случаях он оказываетсяполезным, поскольку, в противоположность последовательности \Ь, позволяет различатьначало и конец слова.Если в вашей системе установлен редактор текстов vi или vim, воспользуйтесь им,чтобы проверить, как работает описанный синтаксис. Для этого следуйте приведеннымниже простым инструкциям.

Вы легко их выполните, даже если никогда прежде не ра­ботали с редактором vim. Откройте окно командной строки или интерпретатора команд,перейдите в каталог, в котором находится файл с текстом поэмы, и выполните следую­щую команду:vim rime.txtГлава 3. Границы45RegExrSamplбHa.tdtl� globalL.J 19noreCasliс.....-1 ext,зndQ!di:!JdotallCommunityL., multil1nвТНЕ RIME OF ТНЕ ANCYENТ MPR!NERE, IN SEVEN PARTS.\WARGUMENТ.ldHow а Shlp havlng pas:s.ed the Une vnis drlVl!n Ьу Storms to the cotdCountry towaгds the South Pole: and how from thence she made her cou�et:o the tropic.;з[ Ultitude of the Great Pacific Oce.an; and of th!! strenQethings that befellJ and ln wtlat: manner th-e Ancyent Marlnere. c:ame back tohis Ol',11 Cou ntry.\D1.4Ну Savedl show aU\Ве\В\,\S[АВС)[лдесJIt i,; an ancy41nt Marlnere,And he stoppeth one of three:"Ву thy tong gгеу beard and thy gl1�..ring еуе"Now vA-н!r@fore st:opp�t me?[•-•][a->A·Z]Mёit.ches any chariilcter.

excoC)t for llne,breaks 1f dotaH ls fэls@,R@gExp: /'Ве\6/95pattern: \Ве\Еtugs: gsО capturin9 .group5:о.�.:.ь built о; 9bltin11er.com.lbcut Я.eqE:l'rCnltl'"le ,е,..,,,о"Рис. 3.2. Поиск соответствий границам, не являющимся границами слов,с помощью метасимвола \ ВЗатем введите следующую команду поиска:/\>и нажмите клавишу <Enter> или <Return>.

Косая черта(/) начинает операцию поискав vim. Проследите за позицией курсора, и вы увидите, что данная операция позволяетнаходить концы слов. Для возобновления пошагового поиска служит клавиша n. Далеевведите следующую команду:/\<и вновь нажмите клавишу <Enter> или <Return>. На этот раз операция поиска будет на­ходить начала слов. Для выхода из редактора vim достаточно ввести команду Z Z.Этот же синтаксис работает и в утилите grep. С начала 1970-х годов утилита grep, каки редактор sed, является основной "рабочей лошадкой" Unix. (В 1980-х годах один мойсотрудник с гордостью разъезжал на автомобиле с номерным знаком GREP.) Вы можетебольше узнать о grep, введяman grepилиinfo grep46Гnава 3. Границыв командной строке. Проверьте, как работает эта утилита, введя в командной строке та­кую команду:grep -Еос '\<(THEIThelthe\>' rime txtОпция -Е указывает на то, что вы хотите использовать расширенный вариант регуляр­ных выражений (ERE), а не базовый (BRE), принятый в grep по умолчанию.

Опция о означа­ет, что в качестве результата будет отображаться только та часть строки, которая совпадаетс шаблоном, тогда как опция с означает, что возвращаться должен только счетчик совпаде­ний. Шаблону, заключенному в одинарные кавычки, будет соответствовать любое из следую­щих целых слов: ТНЕ, The и the. Поиск целых слов обеспечивается символами< и>.Данная команда возвратит следующий результат:259представляющий общее количество найденных слов.С другой стороны, если исключить символы< и> из шаблона, результат будет совер­шенно иной.

Выполните следующую команду:grep -Еос '\(THEIThelthe\' rime txtи вы получите другое число:327Почему? Потому что новому шаблону соответствуют не только указанные целые сло­ва, но и любая последовательность, содержащая любое такое слово. Надеюсь, теперь вамстало понятно, какие удобства обеспечивает использование символов< и >.Друrие якорные привязкиСуществует метасимвол, аналогичный якорюной строки:л,которому соответствует начало вход­\АЭто сокращение доступно не во всех реализациях регулярных выражений, но по край­ней мере в Perl и PCRE (Perl CompatiЫe Regular Expressions) им можно пользоваться.Для поиска совпадений с концом входной строки служит дополняющее его сокращение:\Zили, в некоторых контекстах, такое сокращение:\zУтилита pcregrep - это аналог утилиты grep для библиотеки PCRE.

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

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

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