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


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

<_sre.SRE_Match object at ...>
5 69

5 ответов:

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
p = re.complie(r'hi')
print bool(p.match("abcdefghijkl"))