Используя регулярные выражения 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 делает по умолчанию). сослаться на это