#краткий справочник регулярных выражений
"." Любой символ
"^" Начало строки
"$" Конец строки
"*" Повторение фрагмента нуль или более раз
"+" Повторение фрагмента один или более раз
"?" Предыдущий фрагмент либо присутствует, либо отсутствует
"{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)
Комментарии пользователей
Эту новость ещё не комментировалиНаписать комментарий
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!