Python正则表达式返回true/false

nob*_*ody 98 python regex

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

<_sre.SRE_Match object at ...>
Run Code Online (Sandbox Code Playgroud)

Joh*_*ooy 124

如果你真的需要True或者False只是使用bool

>>> bool(re.search("hi", "abcdefghijkl"))
True
>>> bool(re.search("hi", "abcdefgijkl"))
False
Run Code Online (Sandbox Code Playgroud)

正如其他答案所指出的那样,如果您只是将它用作if或的条件while,您可以直接使用它而不需要包装bool()

  • 包装在 `bool` 中使读者清楚程序员的意图。 (5认同)
  • 谢谢@JohnLaRooy。更正: `(re.search("a","abc") 和 True)` (3认同)
  • 当条件语句包含布尔算术运算时,需要“bool”值。例如: if (re.search("a","abc") &amp; True): (2认同)
  • @AizzatSuhardi,`&amp;` 是 **按位** 运算。`and` 将是 **boolean** 操作。 (2认同)

Ign*_*ams 114

Match对象始终为true,None如果没有匹配则返回.只是测试真实性.

if re.match(...):
Run Code Online (Sandbox Code Playgroud)

  • 如果字符串的开始部分与常规模式匹配,则re.match(...)将返回true.搜索将确认字符串中任何位置的模式. (18认同)
  • 如果re.match(...)是None:``,可能更喜欢使用`` (6认同)
  • 抱歉,您是否在回答中解决了评论?我不清楚,你介意澄清一下吗? (2认同)
  • 请问_why_`re`是这样设计的吗?如果`match`对象始终为true,那么既然我们总是需要知道答案是true还是false,为什么它不首先返回True呢? (2认同)
  • @ytu:因为那样你就可以做[你需要做的一切](https://docs.python.org/3/library/re.html#match-objects)。 (2认同)

Vai*_*sai 8

这是我的方法:

import re
# Compile
p = re.compile(r'hi')
# Match and print
print bool(p.match("abcdefghijkl"))
Run Code Online (Sandbox Code Playgroud)


cor*_*ory 7

Ignacio Vazquez-Abrams是对的.但是要详细说明,re.match()将返回None评估False或匹配对象,这将始终True如他所说.只有当您需要有关与正则表达式匹配的部分的信息时,才需要检查匹配对象的内容.


Gav*_*egg 5

一种方法是测试返回值.因为你得到<_sre.SRE_Match object at ...>它意味着这将评估为真.当正则表达式不匹配时,您将返回值None,其值为false.

import re

if re.search("c", "abcdef"):
    print "hi"
Run Code Online (Sandbox Code Playgroud)

产生hi输出.