Главная » Просмотр файлов » Саммерфилд - Программирование на Python 3

Саммерфилд - Программирование на Python 3 (1077331), страница 118

Файл №1077331 Саммерфилд - Программирование на Python 3 (Саммерфилд - Программирование на Python 3) 118 страницаСаммерфилд - Программирование на Python 3 (1077331) страница 1182018-01-10СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

538). Глава полностью охватывает язык регулярных выражений, предлагаемый модулем ге, включая все проверки и флаги. Мы будем выделять регулярные выражения в тексте жирнми эрифтом, места совпадений — ш и том с по че киваниеи, а захваченные символы — Буйо'"че' кивйнйе»г 'й:затенеййем'.

Язык регулярных выражений в Ру1Ьоп В этом разделе мы разобьем рассмотрение языка регулярных выражений на четыре подраздела. В первом подразделе демонстрируется, как находить совпадения с отдельными символами или с группами символов, например, совпадение с символом а, или совпадение с символом Ь, или совпадение с символом а или Ь. Во втором подразделе демонстрируется, как находить совпадения с применением квантификаторов, например, единственное совпадение, или не менее одного совпадения, или столько совпадений, сколько вообще возможно. В третьем подразделе демонстрируется, как группировать подвыражения и как сохранять текст совпадений.

И, наконец, в последнем подразделе демонстрируется, как воздействовать на работу регулярных выражений с использованием проверок и флагов. СимВолы и класо ( симВолоВ Простейшее регулярное выражение — это обычные литералы символов, такие как а или 5. В отсутствие явного квантификатора такое выражение подразумевает «совпадение с одним вхождением». Например, регулярное выражение 1эпе состоит из четырех выражений, каждое из них неявно определяет одно совпадение, поэтому оно будет сов- Глава 12. Регулярные выражения падать с одним символом г, за которым следует один символ и, за которым следует один символ и, за которым следует один символ е, то есть оно будет совпадать со строками Ь~пе и а(и~пес. Большинство символов могут использоваться как литералы, но некоторые из них имеют «специальное назначение» в языке регулярных выражений и потому должны экранироваться символом обратного олеша (1), когда они используются как литералы.

К специальным относятся символы ~. 3?»*()[]() ~. В пределах регулярных выражений можно также использовать большинство стандартных экранированных последовательностей языка РуФЬоп, например, 1л — для обозначения символа перевода строки, ~т — для обозначения символа табуляции, а также экранированные последовательности с шестнадцатеричными кодами символов 1кНН, (оНННН и 10НННННННН. Во многих случаях вместо совпадения с единственным символом бывает необходимо отыскать совпадение с одним из множества символов. Реализовать это можно с помощью символьного класса — один или более символов, заключенные в квадратные скобки.

(Символьные классы не имеют никакого отношения к классам в языке Ру()1оп — это просто термин регулярных выражений, используемый для обозначения «множества символов».) Символьный класс — это выражение и, как и любое другое выражение, в отсутствие явного квантификатора соответствует точно одному символу (который может быть любым символом из данного символьного класса). Например, регулярное выражение г[еа]0 совпадает с гес' и гаса г, но не со словом геас. Точно так же, чтобы отыскать совпадение с единственной цифрой, можно использовать регулярное выражение [0123456799].

Для удобства можно указывать диапазон символов с помощью символа дефиса; так, выражение [0-9] также будет соответствовать цифре. Имеется возможность инвертировать значение символьного класса, указывая символ «крышки» после открывающей квадратной скобки; так, выражение [ "0-9] будет соответствовать любому символу, но ке цифре.

Обратите внимание, что в символьном классе все специальные символы, кроме символа 1, теряют свое специальное значение, но, что касается символа, то он приобретает новое значение (инверсия), когда является первым символом в символьном классе; в противном случае он просто обозначает символ «крышки». Кроме того, символ дефиса обозначает диапазон символов, только если он не является первым символом — в этом случае он просто обозначает символ дефиса. Так как некоторые наборы символов требуются достаточно часто, для них предусматриваются краткие формы записи — они перечислены в табл. 12.1. За одним исключением, эти сокращенные формы могут использоваться внутри символьных классов, например, регулярное выражение [~0А-Ра-Ц соответствует шестнадцатеричной цифре.

Ис- Язык регулярных выражений в Ру((топ 527 ключение составляет символ точки, который за пределами символьно- го класса обозначает набор символов, а внутри символьного класса— сам символ точки. Таблица 12.1. Сокращенные формы символьных классов Символ Значение Соответствует любому символу, за исключением Флаги, символа перевода строки, илн любому символу, р 533 если используется флаг ге. ОСТА[[, или символу . внутри символьного класса Соответствует цифре Юникода или [0-91, если используется флаг ге.

АОСП Соответствует вецифровому символу Юникода или [ 0-9), если используется флаг ге. А8СП 10 Соответствует любому пробельному символу Юникола или [ хгхп1г1[чч), если используется флаг ге. АССП '<в Соответствует любому символу Юникода, не являющемуся про- бельным, или [" 1тчп1гхтчч), если используется флаг ге. АССП Соответствует символу <слова< Юникода или [а-хА-20-9 ), если используется флаг ге. АЗСП Соответствует любому символу не-«слова< Юникода или [ "а-хА- 10-9 ), если используется флаг ге. АССП Квантификаторы Квантификаторы записываются в виде (и, п ), где а и и — это минимальное и максимальное число совпадений с выражением, при которых соответствие выражению с квантификатором будет считаться найденным. Например, оба выражения е(1,1)е(1,1) и е(2,2) соответствуют слову Тее1, но не соответствуют слову [011.

Записывать квантификатор после каждого выражения было бы слишком утомительно, а сами регулярные выражения при этом было бы трудно читать. К счастью, язык регулярных выражений поддерживает несколько удобных сокращений. Если в квантификаторе указывается только одно число, оно обозначает и минимум и максимум, то есть выражение е(2) — это то же самое, что выражение е(2,2).

И, как уже отмечалось в предыдущем разделе, если квантификатор не указан явно, предполагается, что он равен единице (например, (1, 1), или (1)), то есть выражение ее — это то же самое, что выражение е(1,1)е(1,1) или е(1)е(1); оба выражения е(2) и ее соответствуют слову гее1, но не соответствуют слову Те11. Бывает удобно использовать различные минимальное и максимальное значения.

Например, чтобы найти совпадение со словами 1гвчв11еб и С гаче1вб (обе формы записи являются допустимыми) можно было бы 528 Глава 12. Регулярные выражения использовать выражение Тгаче1(1,2)еб или 7гаче11(0,1)еб. Квантификатор (О, 1) используется настолько часто, что для него появилось собственное сокращение — 2 „поэтому другой способ записи (к тому же чаще использующийся на практике) этого регулярного выражения выглядит так: С гаче112ей. Имеются еще два сокращения для квантификаторов: + — обозначает (1, и) (» не менее одного»); * — обозначает (О, и) (»любое число»).

В обоих случаях и обозначает максимально допустимое для квантификатора число, которое обычно не менее 32 767. Все квантификаторы перечислены в табл. 12.2. Таблица 12.2. Квантифинаторь» регулярных выражений Синтаксис Значение Максимальный, соответствует нулевому или большему чис- лу вхождений выражения е е7 илие(0,1) Минимальный, соответствует нулевому или большему чис- лу вхождений выражения е е77 или е(0,1)7 Максимальный, соответствует одному нлн больше вхожде- нию выражения е е+ или е(1, ) Минимальный, соответствует одному или больше вхожде- нию выражения е е+7 или е(1, )7 Максимальный, соответствует нулевому или большему чис- лу вхождений выражения е е* или е(0, ) Минимальный, соответствует нулевому или большему чис- лу вхождений выражения е е*7 или е(0, )7 е(а) Соответствует точно а вхождениям выражения е Максимальный, соответствует по меньшей мере а вхожде- ниям выражения е е(а, ) Минимальный, соответствует по меньшей мере а вхождени- ям выражения е Максимальный, соответствует не более чем и вхождениям выраженияе е(, и) е(, и)7 Минимальный, соответствует ие более чем и вхождениям выражения е Максимальный, соответствует не менее чем а и не более чем и вхождениям выражения е е(а, и) Минимальный, соответствует не менее чем а и не более чем и вхождениям выражения е е(а, и)7 Квантификатор + очень удобен.

Например, для поиска соответствий целым числам можно было бы использовать выражение 10», так как оно совпадает с одной или более цифрами. Данное регулярное выражение может отыскать два совпадения в строке 4588,91, например, Язык регулярных выражений з Ру(Ьоп 529 4588. 91 и 4588. 91. Иногда длительное удержание клавиши приводит к появлению опечаток.

Мы могли бы использовать выражение Ьече1»ег1 для поиска допустимых форм написания Ьече1ез и Ьече11ез, а также опечатки Ьече111ес. Если бы потребовалось считать допустимой только форму записи с одним символом 1 и отыскать только формы записи с двумя или более символами 1, мы могли бы применить регулярное выражение ЬечеП+еб. Квантификатор * используется реже — просто потому, что он может приводить к получению неожиданных результатов. Например, предположим, что требуется отыскать строки с комментариями в файлах с программным кодом на языке РуФ)зоп. Для етого мы могли бы попытаться использовать регулярное выражение в*.

Но такое выражение будет соответствовать любым строкам, даже пустым, потому что фраза «совпадение с любым числом символов Ф» подразумевает и нулевое число совпадений. Если вы плохо знакомы с регулярными выражениями, возьмите себе за правило вообще не использовать квантификатор *, а если вы используете его (или квантификатор?), то обязательно убедитесь, что хотя бы одно подвыражение в регулярном выражении использует ненулевой квантификатор, то есть используется хотя бы один квантификатор, отличный от * и 7, так как оба они могут находить соответствие при нулевом числе совпадений. Часто возможно заменить квантификатор ° на квантификатор +, и наоборот.

Например, отыскать соответствие слову «1авве!1ег)», в котором присутствует хотя бы один символ 1, можно с помощью выражения газве11*ез или гвззе1+ео, а соответствие формам записи с двумя или более символами 1 — с помощью Сззве111*ес или гзззе11+ев. Регулярное выражение хо+ будет соответствовать строке 136. Но почему оно соответствует всем цифрам, а не только первой "г По умолчанию все квантификаторы являются жадными (или максимальными) — они стремятся соответствовать как можно большему числу символов. Любой квантификатор можно сделать нежадным (или минимальным), добавив после него символ 7. (Знак вопроса имеет два разных значения— когда он употребляется самостоятельно, он интерпретируется как сокращенная форма записи квантификатора (0,1), а когда следует за квантификатором — он говорит о том, что стоящий перед ним квантификатор является минимальным.) Например, выражение хо+2 обнаружит соответствие в строке 136 в трех разных местах: 136, 136 и 136.

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

Тип файла
DJVU-файл
Размер
6,88 Mb
Тип материала
Высшее учебное заведение

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

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