Подтвердить что ты не робот

Регулярные выражения Python возвращают true/false

Используя регулярные выражения Python, как вы можете получить True/False возвращенный? Все возвращаемые Python:

<_sre.SRE_Match object at ...>
4b9b3361

Ответ 1

Match объекты всегда верны, а None возвращается, если совпадение отсутствует. Просто испытайте истинность.

if re.match(...):

Ответ 2

Если вам действительно нужно True или False, просто используйте bool

>>> bool(re.search("hi", "abcdefghijkl"))
True
>>> bool(re.search("hi", "abcdefgijkl"))
False

Как указывалось в других ответах, если вы просто используете его как условие для if или while, вы можете использовать его напрямую, не обернув bool()

Ответ 3

Игнасио Васкес-Абрамс прав. Но для уточнения, re.match() вернет либо None, который оценивается как False, либо объект сопоставления, который всегда будет True, как он сказал. Только если вам нужна информация о части (ях), которая соответствует вашему регулярному выражению, вам нужно проверить содержимое объекта соответствия.

Ответ 4

Один из способов сделать это - просто проверить значение возврата. Поскольку вы получаете <_sre.SRE_Match object at ...>, это означает, что это будет оцениваться как true. Когда регулярное выражение не сопоставляется, вы получите возвращаемое значение None, которое вычисляется как false.

import re

if re.search("c", "abcdef"):
    print "hi"

Производит hi как вывод.

Ответ 5

Вот мой метод:

import re
# Compile
p = re.compile(r'hi')
# Match and print
print bool(p.match("abcdefghijkl"))

Ответ 6

Вы можете использовать re.match() или re.search(). Python предлагает две различные примитивные операции на основе регулярных выражений: re.match() проверяет совпадение только в начале строки, а re.search() проверяет совпадение в любом месте строки (это то, что Perl делает по умолчанию). сослаться на это