В Python есть несколько опций для соответствия всего ввода с помощью регулярного выражения.
В Python 2.x вы можете использовать
re.match(r'\d+$') # re.match anchors the match at the start of the string, so $ is what remains to add
или - чтобы избежать совпадения перед окончательным \n
в строке:
re.match(r'\d+\Z') # \Z will only match at the very end of the string
Или так же, как описано выше, с re.search
методом, требующим использования ^
/ \A
, поскольку он не фиксирует совпадение в начале строки:
re.search(r'^\d+$')
re.search(r'\A\d+\Z')
Обратите внимание, что \A
является однозначным началом начала строки, его поведение не может быть переопределено с помощью любого модификаторы (re.M
/ re.MULTILINE
могут только переопределять поведение ^
и $
).
Все те случаи, которые описаны в разделе Python 2 и один более полезный метод, re.fullmatch
(также присутствует в модуле PyPi regex
):
Если вся строка соответствует шаблону регулярного выражения , возвращает соответствующий объект соответствия. Верните
blockquote>None
, если строка не соответствует шаблону; обратите внимание, что это отличается от совпадения нулевой длины.Итак, после компиляции регулярного выражения просто используйте соответствующий метод:
_rex = re.compile("\d+") if _rex.fullmatch(s): doStuff()