Проект «SnakeProject» Михаила Козлова

Навигация

⇒ Python ⇐

CISCO

Voice(Asterisk\Cisco)

Microsoft

Powershell

SQL\T-SQL

FreeBSD and Nix

Общая

WEB Разработка

ORACLE SQL \ JAVA

Мото


Python: регулярные выражения \ Regular Expressions


Регулярные выражения в Python


#краткий справочник регулярных выражений
"."            Любой символ
"^"            Начало строки
"$"            Конец строки
"*"            Повторение фрагмента нуль или более раз 
"+"            Повторение фрагмента один или более раз 
"?"            Предыдущий фрагмент либо присутствует, либо отсутствует
"{m,n}"        Повторение предыдущего фрагмента от m до n раз включительно 
"[...]"        Любой символ из набора в скобках. 
"[^...]"       Любой символ не из набора в скобках
""             Обратная косая черта отменяет специальное значение следующего за ней символа
"|"            Фрагмент справа или фрагмент слева
"*?"           Повторение фрагмента нуль или более раз 
"+?"           Повторение фрагмента один или более раз 
"{m,n}?"       Повторение предыдущего фрагмента от m до n раз включительно 

#Модуль регулярных выражений
import re

#match - функция модуля re сопостовляющаяя шаблон 'str' со строкой 'string' ведет поиск с начала строки
#search - функция модуля re ведущая поиск шаблона по строке
#group - возвращает сопоставления (может возвращать указанную подгруппу если указана скобками - "()")
#groups - возвращает кортеж наденных сопоставлений
#findall - возвращает список вхождений
#finditer - возвращает итерацию(объект), который можно обработать (например в цикле)
#split - разбивает по разделителю х и возвращает список - "split('х', "1х2х3")"
#sub - поиск и замена x1 на x2 в строке x3 - "sub('x1', 'x2', 'x3')"
#subn - аналогична sub, добавляет количество замен в конец списка
#compile - позволяет скомпилировать шаблон для оптимизации производительности (например при множественном сравнении в циклах)
#условие if a is not None проверяет было найдено сопоставление или нет

#найдены сопоставления
a = re.match('str','string')
if a is not None: a.group()

#не найдено сопоставлений
a = re.match('str','bring')
if a is not None: a.group()

#match - не найдет сопоставления
a = re.match('str','bringstring')
if a is not None: a.group()

#search - найдет сопоставления
a = re.search('str','bringstring')
if a is not None: a.group()

#объектный вариант записи
re.match('str','string').group()

#примеры с указанием "^ - начинается с" и "$ - заканчивается на"
re.search('^a','ab').group()
re.search('b$','ab').group()

#пример с вхождением диапазона от х1 до х2 - "[x1-x2]"
re.search('[a-s]tring','string').group()

#пример с вхождением символов х1 или х2 - "[x1x2]"
re.search('[as]tring','string').group()

#пример с вхождением "." - один любой символ
re.search('.tr','string').group()

#пример с вхождениями с "логическим или"
re.search('br|ing','string').group()

#пример с повторением вхождения n или m раз - "[s]{n,m}"
re.search('[t]{3,5}','stttring').group()

#примеры с подгруппами и кортежем сопоставлений
re.search('(a).(b)','a&b').group(1)
re.search('(a).(b)','a&b').group(2)
re.search('(a).(b)','a&b').groups()

#пример c нахождением вхождений и возвратом их ввиде списка
re.findall('[0-9]', " 1a 2 b3 ")

#пример с перебором по возвращаемой итерации
a = re.finditer('[0-9]', " 1a 2 b3 ")
a.__next__().group()
a.__next__().group()
a.__next__().group()

#пример с разбиением по разделителю и возврат в виде списка
re.split(' ', "1 a ^")

#пример с поиском и заменой - sub и subn
re.sub('[0-9]', '7', '1a 2b 3c')
re.subn('[0-9]', '7', '1a 2b 3c')

#пример с компиляцией шаблона - compile
a = ['1a','2b','3c']
templ = re.compile('[0-9]')
for key in a:
    re.findall(templ, key)


Комментарии пользователей

Эту новость ещё не комментировалиНаписать комментарий
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!

Контакты для обмена ссылками между сайтами Видео к статьям на Youtube Сборник материалов по Cisco, Asterisk, Windows Server, Python и Django, SQL и T-SQL, FreeBSD и Linux Код обмена баннерами
Мои друзья: www.info-x.org - Информационный ресурс о ОС FreeBSD За сложными вещами простые действия Новости Ubuntu Linux Сообщество сисадминов Личный сайт skeletora Советы, помощь, инструменты для сис.админа, статическая и динамическая маршрутизация, FreeBSD

Рейтинг@Mail.ru
Рейтинг@Mail.ru Яндекс.Метрика

© Snakeproject.ru создан в 2013 году.
При копировании материала с сайта - оставьте ссылку.