Как обрезать начальные и конечные пробелы строки?

В Python есть несколько опций для соответствия всего ввода с помощью регулярного выражения.

Python 2

В 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 3

Все те случаи, которые описаны в разделе Python 2 и один более полезный метод, re.fullmatch (также присутствует в модуле PyPi regex ):

Если вся строка соответствует шаблону регулярного выражения , возвращает соответствующий объект соответствия. Верните None, если строка не соответствует шаблону; обратите внимание, что это отличается от совпадения нулевой длины.

blockquote>

Итак, после компиляции регулярного выражения просто используйте соответствующий метод:

_rex = re.compile("\d+")
if _rex.fullmatch(s):
    doStuff()

150
задан Tim Cooper 13 July 2018 в 21:40
поделиться