Answers:
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
or 的条件while
,则可以直接使用它而无需将其包装bool()
bool
当条件语句包含布尔算术运算时,需要此值。例如:if(re.search(“ a”,“ abc”)&True):
&
是按位操作。and
将是布尔运算。
(re.search("a","abc") and True)
bool
使读者可以清楚地了解程序员的意图。
一种方法是仅针对返回值进行测试。因为您得到<_sre.SRE_Match object at ...>
它意味着它将评估为true。当正则表达式不匹配时,您将返回无值,其结果为false。
import re
if re.search("c", "abcdef"):
print "hi"
产生hi
为输出。
None
如果未明确返回任何内容,则为默认值。
您可以使用re.match()
或re.search()
。Python提供了两种基于正则表达式的原始操作:re.match()
仅在字符串的开头re.search()
检查匹配项,而在字符串中的任意位置检查匹配项(这是Perl的默认设置)。参考这个