Используя регулярные выражения Python, как вы можете получить True/False возвращенный? Все возвращаемые Python:
<_sre.SRE_Match object at ...>
Используя регулярные выражения Python, как вы можете получить True/False возвращенный? Все возвращаемые Python:
<_sre.SRE_Match object at ...>
Match объекты всегда верны, а None возвращается, если совпадение отсутствует. Просто испытайте истинность.
if re.match(...):
Если вам действительно нужно True или False, просто используйте bool
>>> bool(re.search("hi", "abcdefghijkl"))
True
>>> bool(re.search("hi", "abcdefgijkl"))
False
Как указывалось в других ответах, если вы просто используете его как условие для if или while, вы можете использовать его напрямую, не обернув bool()
Игнасио Васкес-Абрамс прав. Но для уточнения, re.match() вернет либо None, который оценивается как False, либо объект сопоставления, который всегда будет True, как он сказал. Только если вам нужна информация о части (ях), которая соответствует вашему регулярному выражению, вам нужно проверить содержимое объекта соответствия.
Один из способов сделать это - просто проверить значение возврата. Поскольку вы получаете <_sre.SRE_Match object at ...>, это означает, что это будет оцениваться как true. Когда регулярное выражение не сопоставляется, вы получите возвращаемое значение None, которое вычисляется как false.
import re
if re.search("c", "abcdef"):
print "hi"
Производит hi как вывод.
Вот мой метод:
import re
# Compile
p = re.compile(r'hi')
# Match and print
print bool(p.match("abcdefghijkl"))
Вы можете использовать re.match() или re.search().
Python предлагает две различные примитивные операции на основе регулярных выражений: re.match() проверяет совпадение только в начале строки, а re.search() проверяет совпадение в любом месте строки (это то, что Perl делает по умолчанию). сослаться на это