파이썬 정규식을 사용하여 어떻게 True
/를 False
반환 할 수 있습니까? 모든 Python 반환은 다음과 같습니다.
<_sre.SRE_Match object at ...>
답변
Match
개체는 항상 true이며 None
일치하는 항목이 없으면 반환됩니다. 진실성을 테스트하십시오.
if re.match(...):
답변
정말로 필요하다면 True
또는을 False
사용하십시오.bool
>>> bool(re.search("hi", "abcdefghijkl"))
True
>>> bool(re.search("hi", "abcdefgijkl"))
False
다른 답변에서 지적했듯이 if
또는에 대한 조건으로 while
사용하는 경우 포장하지 않고 직접 사용할 수 있습니다.bool()
답변
Ignacio Vazquez-Abrams가 맞습니다. 그러나 자세히 설명하기 위해 re.match()
는로 None
평가되는 False
, 또는 True
그가 말한대로 항상 일치하는 개체 를 반환합니다 . 정규식과 일치하는 부분에 대한 정보를 원하는 경우에만 일치 개체의 내용을 확인해야합니다.
답변
이를 수행하는 한 가지 방법은 반환 값에 대해 테스트하는 것입니다. 당신이 <_sre.SRE_Match object at ...>
그것을 얻고 있기 때문에 이것이 사실로 평가된다는 것을 의미합니다. 정규식이 일치하지 않으면 반환 값 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"))
