Проект «SnakeProject» Михаила КозловаРегистрация

Навигация
⇒Python⇒

⇐CISCO
⇐Voice(Asterisk\Cisco)
⇐Microsoft
⇐Powershell
⇐SQL\T-SQL
⇐FreeBSD and Nix
⇐1С
⇐Общая
⇐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)


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

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

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


Яндекс.Метрика

Goon Каталог сайтов Рейтинг@Mail.ru