Python正则表达式返回true/false

Python正则表达式返回true/false,python,regex,Python,Regex,使用Python正则表达式如何获得返回的True/False?所有Python返回值都是: <_sre.SRE_Match object at ...> Match对象始终为true,如果不存在匹配项,则返回None。只是测试一下真实性 if re.match(...): 伊格纳西奥·巴斯克斯·艾布拉姆斯是正确的。但是要详细说明,re.match()将返回None,其计算结果为False,或者返回一个match对象,如他所说,该对象将始终为True。只有当您需要与正则表达式匹配的

使用Python正则表达式如何获得返回的
True
/
False
?所有Python返回值都是:

<_sre.SRE_Match object at ...>

Match
对象始终为true,如果不存在匹配项,则返回
None
。只是测试一下真实性

if re.match(...):

伊格纳西奥·巴斯克斯·艾布拉姆斯是正确的。但是要详细说明,
re.match()
将返回
None
,其计算结果为
False
,或者返回一个match对象,如他所说,该对象将始终为
True
。只有当您需要与正则表达式匹配的部分的相关信息时,才需要签出匹配对象的内容。

一种方法就是根据返回值进行测试。因为您得到了
,这意味着这将计算为true。当正则表达式不匹配时,将返回值None,其计算结果为false

import re

if re.search("c", "abcdef"):
    print "hi"

生成
hi
作为输出。

如果确实需要
True
False
,只需使用
bool

>>> bool(re.search("hi", "abcdefghijkl"))
True
>>> bool(re.search("hi", "abcdefgijkl"))
False
正如其他答案所指出的,如果您只是将其用作
if
while
的条件,那么您可以直接使用它,而无需将其包装在
bool()
中,以下是我的方法:

import re
# Compile
p = re.compile(r'hi')
# Match and print
print bool(p.match("abcdefghijkl"))
您可以使用
re.match()
re.search()

Python基于正则表达式提供了两种不同的基本操作:
re.match()
仅在字符串开头检查匹配,而
re.search()
检查字符串中任何位置的匹配(这是Perl默认的操作)。参考

您总是会得到一个返回值<如果未显式返回任何内容,则默认为code>None。谢谢--更正了此问题。我只是根据我在REPL.re.match中看到的情况,如果字符串的开头部分与规则模式匹配,那么match(…)将返回true。而搜索将确认字符串中任何位置的模式。如果re.match(…)为None,则可能更需要使用
而不是。对不起,您是否在回答中提到了注释?我不清楚,你介意澄清一下吗?我可以问一下为什么
re
是这样设计的吗?如果
match
对象总是true,那么既然我们总是需要知道答案是真是假,那么为什么它不首先返回
true
?@ytu:因为这样你就可以了。
bool
值是条件语句包含布尔算术运算时需要的。例如:if(re.search(“a”、“abc”)和True):@AizzatSuhardi,
&
是一种按位操作
将是布尔运算。谢谢@johnlaroy。更正:
(重新搜索(“a”、“abc”)和True)
这与ignacio的答案有何不同?在
bool
中包装会让读者清楚程序员的意图。p=re.compile(r'hi'):-Pyeah,如果将
match
更改为
search
,则返回True