Home

Tags

Паттерны 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