답변:
Match
개체는 항상 true이며 None
일치하는 항목이 없으면 반환됩니다. 진실성을 테스트하십시오.
if re.match(...):
if re.match(...) is None:
대신 사용 하는 것이 더 바람직 할 수 있습니다.
re
디자인 되었는지 물어봐도 될까요? 경우 match
객체는 항상 해당, 이유는 반환하지 않습니다 True
우리는 항상 대답은 참 또는 거짓 어쨌든인지를 알 필요가 주어진 첫 번째 장소에서?
정말로 필요하다면 True
또는을 False
사용하십시오.bool
>>> bool(re.search("hi", "abcdefghijkl"))
True
>>> bool(re.search("hi", "abcdefgijkl"))
False
다른 답변에서 지적했듯이 if
또는에 대한 조건으로 while
사용하는 경우 포장하지 않고 직접 사용할 수 있습니다.bool()
bool
조건문에 부울 산술 연산이 포함 된 경우 값이 필요합니다. 예 : if (re.search ( "a", "abc") & True) :
&
는 비트 연산입니다. 부울 연산 and
이 될 것 입니다.
(re.search("a","abc") and True)
bool
하면 프로그래머의 의도가 독자에게 명확 해집니다.
이를 수행하는 한 가지 방법은 반환 값에 대해 테스트하는 것입니다. 당신이 <_sre.SRE_Match object at ...>
그것을 얻고 있기 때문에 이것이 사실로 평가된다는 것을 의미합니다. 정규식이 일치하지 않으면 반환 값 None이 반환되며 이는 false로 평가됩니다.
import re
if re.search("c", "abcdef"):
print "hi"
생성 hi
출력한다.
None
아무것도 명시 적으로 반환되지 않으면 기본값입니다.