如何使用Python正则表达式获取True
/False
返回值?Python只会返回以下内容:
<_sre.SRE_Match object at ...>
如果你确实需要 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)。 - Aizzat Suhardi&
是位运算符。and
则是布尔运算符。 - John La Rooy(re.search("a","abc") and True)
。 该代码段将返回True,因为re.search("a","abc")
匹配到了字符串"abc"中的字母"a",且True
始终为True,所以整个条件表达式为True。 - Aizzat Suhardibool
中可以让程序员的意图更加清晰地传达给读者。 - Guilherme SaloméMatch
对象始终为 true(真),如果没有匹配,则返回 None
。只需测试真假即可。
if re.match(...):
re
被设计成这样吗?如果match
对象总是真的,那为什么它不直接在第一次返回 True
呢?毕竟我们最终需要知道答案是真还是假。 - ytu这是我的方法:
import re
# Compile
p = re.compile(r'hi')
# Match and print
print bool(p.match("abcdefghijkl"))
Ignacio Vazquez-Abrams 是正确的。 但是为了阐述,re.match()
会返回None
,它会被评估为False
,或者一个匹配对象,它将始终如他所说的那样评估为True
。 只有当您想要有关与正则表达式匹配的部分的信息时,您才需要查看匹配对象的内容。
一种方法是只测试返回值。因为你得到的是 <_sre.SRE_Match object at ...>
,这意味着它将计算为真。当正则表达式没有匹配时,你会得到返回值 None,它计算为假。
import re
if re.search("c", "abcdef"):
print "hi"
hi
作为输出。None
。 - Ignacio Vazquez-Abrams你可以使用 re.match()
或者 re.search()
。
基于正则表达式,Python 提供了两种不同的原始操作:re.match()
仅在字符串开头处检查匹配,而 re.search()
则在字符串的任何位置检查匹配(这是 Perl 默认的行为)。详情请参见此文档。
bool(re.search(pattern=META_VAR_REGEX, string=coq_str))
。 - Charlie Parker