Array Array - Язык программирования Python
- Название:Язык программирования Python
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Array Array - Язык программирования Python краткое содержание
Язык программирования Python - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Следует заметить, что для задания шаблона использована необработанная строка. В данном примере она не требовалась, но в общем случае лучше записывать строковые литералы именно так, чтобы исключить влияние специальных последовательностей, записываемых через обратную косую черту.
Синтаксис регулярного выражения
Синтаксис регулярных выражений в Python почти такой же, как в Perl, grep и некоторых других инструментах. Часть символов (в основном буквы и цифры) обозначают сами себя. Строка удовлетворяет (соответствует) шаблону, если она входит во множество строк, которые этот шаблон описывает.
Здесь стоит также отметить, что различные операции используют шаблон по–разному. Так, search() ищет первое вхождение строки, удовлетворяющей шаблону, в заданной строке, а match() требует, чтобы строка удовлетворяла шаблону с самого начала.
Символы, имеющие специальное значение в записи регулярных выражений:
Символ Что обозначает в регулярном выражении
".» Любой символ
"^" Начало строки
"$" Конец строки
"*" Повторение фрагмента нуль или более раз (жадное)
«+» Повторение фрагмента один или более раз (жадное)
"?» Предыдущий фрагмент либо присутствует, либо отсутствует
«{m,n}» Повторение предыдущего фрагмента от m до n раз включительно (жадное)
«[…]» Любой символ из набора в скобках. Можно задавать диапазоны символов с идущими подряд кодами, например: a–z
«[^…]» Любой символ не из набора в скобках
"\" Обратная косая черта отменяет специальное значение следующего за ней символа
"|" Фрагмент справа или фрагмент слева
"*?» Повторение фрагмента нуль или более раз (не жадное)
«+?» Повторение фрагмента один или более раз (не жадное)
«{m,n}?» Повторение предыдущего фрагмента от m до n раз включительно (не жадное)
Если A и B — регулярные выражения, то их конкатенация AB является новым регулярным выражением, причем конкатенация строк a и b будет удовлетворять AB, если a удовлетворяет A и b удовлетворяет B. Можно считать, что конкатенация — основной способ составления регулярных выражений.
Скобки, описанные ниже, применяются для задания приоритетов и выделения групп (фрагментов текста, которые потом можно получить по номеру или из словаря, и даже сослаться в том же регулярном выражении).
Алгоритм, который сопоставляет строки с регулярным выражением, проверяет соответствие того или иного фрагмента строки регулярному выражению. Например, строка «a» соответствует регулярному выражению «[a–z]», строка «fruit» соответствует «fruit|vegetable», а вот строка «apple» не соответствует шаблону «pineapple».
В таблице ниже вместо регвыр может быть записано регулярное выражение, вместо имя — идентификатор, а флаги будут рассмотрены ниже.
Обозначение Описание
«(регвыр)» Обособляет регулярное выражение в скобках и выделяет группу
«(?:регвыр)» Обособляет регулярное выражение в скобках без выделения группы
«(?=регвыр)» Взгляд вперед: строка должна соответствовать заданному регулярному выражению, но дальнейшее сопоставление с шаблоном начнется с того же места
«(?!регвыр)» То же, но с отрицанием соответствия
«(?<=регвыр)» Взгляд назад: строка должна соответствовать, если до этого момента соответствует регулярному выражению. Не занимает места в строке, к которой применяется шаблон. Параметр регвыр должен быть фиксированной длины (то есть, без «+» и "*")
«(?
«(?P<���имя>регвыр)» Выделяет именованную группу с именем имя
«(?P=имя)» Точно соответствует выделенной ранее именованной группе с именем имя
«(?#регвыр)» Комментарий (игнорируется)
«(?(имя)рв1|рв2)» Если группа с номером или именем имя оказалась определена, результатом будет сопоставление с рв1, иначе — c рв2. Часть |рв2 может отсутствовать
«(?флаг)» Задает флаг для всего данного регулярного выражения. Флаги необходимо задавать в начале шаблона
В таблице ниже описаны специальные последовательности, использующие обратную косую черту:
Последовательность Чему соответствует
"\1» — "\9» Группа с указанным номером. Группы нумеруются, начиная с 1
"\A» Промежуток перед началом всей строки (почти аналогично "^")
"\Z» Промежуток перед концом всей строки (почти аналогично "$")
"\b» Промежуток между символами перед словом или после него
"\B» Наоборот, не соответствует промежутку между символами на границе слова
"\d» Цифра. Аналогично «[0–9]»
"\s» Любой пробельный символ. Аналогично «[\t\n\r\f\v]»
"\S» Любой непробельный символ. Аналогично «[^\t\n\r\f\v]»
"\w» Любая цифра или буква (зависит от флага LOCALE)
"\W» Любой символ, не являющийся цифрой или буквой (зависит от флага LOCALE)
Флаги, используемые с регулярными выражениями:
Листинг
«(?i)», re.I, re.IGNORECASE
Сопоставление проводится без учета регистра букв.
Листинг
«(?L)», re.L, re.LOCALE
Влияет на определение буквы в "\w», "\W», "\b», "\B» в зависимости от текущей культурной среды (locale).
Листинг
«(?m)», re.M, re.MULTILINE
Если этот флаг задан, "^" и "$" соответствуют началу и концу любой строки.
Листинг
«(?s)», re.S, re.DOTALL
Если задан, ".» соответствует также и символу конца строки "\n».
Листинг
«(?x)», re.X, re.VERBOSE
Если задан, пробельные символы, не экранированные в шаблоне обратной косой чертой, являются незначащими, а все, что расположено после символа "#", — комментарии. Позволяет записывать регулярное выражение в несколько строк для улучшения его читаемости и записи комментариев.
Листинг
«(?u)», re.U, re.UNICODE
В шаблоне и в строке использован Unicode.
Методы объекта–шаблона
В результате успешной компиляции шаблона функцией re.compile() получается шаблон–объект (он именуется SRE_Pattern), который имеет несколько методов, некоторые из них будут рассмотрены. Как обычно, подробности и информация о дополнительных аргументах — в документации по Python.
Листинг
match(s)
Сопоставляет строку s с шаблоном, возвращая в случае удачного сопоставления объект с результатом сравнения (объект SRE_Match). В случае неудачи возвращает None. Сопоставление начинается от начала строки.
Листинг
search(s)
Аналогичен match(s), но ищет подходящую подстроку по всей строке s.
Листинг
split(s[, maxsplit=0])
Разбивает строку на подстроки, разделенные подстроками, заданными шаблоном. Если в шаблоне выделены группы, они попадут в результирующий список, перемежаясь с подстроками между разделителями. Если указан maxsplit, будет произведено не более maxsplit разбиений.
Листинг
findall(s)
Ищет все неперекрывающиеся подстроки s, удовлетворяющие шаблону.
Листинг
finditer(s)
Возвращает итератор по объектам с результатами сравнения для всех неперекрывающихся подстрок, удовлетворяющих шаблону.
Листинг
sub(repl, s)
Заменяет в строке s все (или только count, если он задан) вхождения неперекрывающихся подстрок, удовлетворяющих шаблону, на строку, заданную с помощью repl. В качестве replможет выступать строка или функция. Возвращает строку с выполненными заменами. В первом случае строка repl подставляется не просто так, а интерпретируется с заменой вхождений "\номер» на группу с соответствующим номером и вхождений "\g<���имя>" на группу с номером или именем имя. В случае, когда repl — функция, ей передается объект с результатом каждого успешного сопоставления, а из нее возвращается строка для замены.
Читать дальшеИнтервал:
Закладка: