Как с помощью регулярных выражений Python вернуть True
/ False
? Все возвращаемые Python:
<_sre.SRE_Match object at ...>
Match
объекты всегда истинны и None
возвращаются, если совпадений нет. Просто проверьте правильность.
if re.match(...):
if re.match(...) is None:
вместо этогоre
он так устроен? Еслиmatch
объекты всегда истинны, почему они просто не возвращаютсяTrue
в первую очередь, учитывая, что нам всегда нужно знать, истинен ли ответ или нет?Если вам действительно нужно
True
илиFalse
, просто используйтеbool
Как указывали другие ответы, если вы просто используете его как условие для
if
илиwhile
, вы можете использовать его напрямую, не обертываяbool()
источник
bool
Значение необходимо, когда условный оператор содержит логическую арифметическую операцию. например: if (re.search ("a", "abc") & True):&
это побитовая операция.and
будет логической операцией.(re.search("a","abc") and True)
bool
проясняет намерения программиста для читателя.Игнасио Васкес-Абрамс прав. Но чтобы уточнить,
re.match()
вернется либоNone
, который оцениваетFalse
, либо объект соответствия, который всегда будет таким,True
как он сказал. Только если вам нужна информация о части (ах), которая соответствует вашему регулярному выражению, вам нужно проверить содержимое объекта match.источник
Один из способов сделать это - просто проверить возвращаемое значение. Поскольку вы получаете
<_sre.SRE_Match object at ...>
это, это означает, что это будет истинным. Если регулярное выражение не совпадает, вы получите возвращаемое значение None, которое оценивается как false.Производится
hi
как вывод.источник
None
используется по умолчанию, если ничего явно не возвращается.Вот мой метод:
источник
match
наsearch
, вернет TrueВы можете использовать
re.match()
илиre.search()
. Python предлагает две разные примитивные операции, основанные на регулярных выражениях:re.match()
проверяет совпадение только в начале строки, аre.search()
проверяет совпадение в любом месте строки (это то, что Perl делает по умолчанию). сослаться на этоисточник