Паттерны regexp
2010-03-17
regexp
Основные
'.' - (точка) - любой символ, если включить режим DOTALL то и перенос строки будет подходить под этот паттерн
'^', '\A' - Начало строки
'$', '\Z' - Конец строки
'\w' - буква
'\W' - не буква
'\d' - число
'\D' - не число
'\s' - символ пустоты (табулятор, пробел и т.п.)
'\S' - не символ пустоты
[] - указать диапазон символов, пример:
[a-zA-Z\s]
[^] - противоположно предыдущему, указывает символы которые не должны попасться, пример:
[^a-z]
Указатели количества
'*' - 0 и более
'+' - 1 или более
'?' - 0 или 1
{a,b} - от a до b
{a} - кол-во = a
Дополнительно
(?=text) - условие того что
text присутствует, но курсор регепса не смещается т.е. дальнейший поиск начнется с той же позиции что и до текущего паттерна.
пример:
>>> print re.findall(r'\s(\w)\s',' a b c ') # обычное сравнение
['a', 'c']
>>> print re.findall(r'\s(\w)(?=\s)',' a b c ') # сравнение без сдвига курсора
['a', 'b', 'c']
(?!text) - аналогично предыдущему, но условие что текст не равен
(?:a|b) - условие того что текст равен
a или
b