使用python3的条件语句中的正则表达式

2024-10-02 20:33:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在sololearan课程上自学python3。我现在正在学习正则表达式。在

以下是源代码:

import re

pattern = r"spam"

if re.match(pattern, "spamspamspam"):
    print("Match")
else:
    print("No match")

---根据Sololearn Python 3教程--

if语句中的条件让我很困惑。据我所知,if语句中的条件应该是布尔表达式。 但是重新匹配函数,确定它是否匹配字符串的开头,不返回布尔值(如果匹配,则返回表示匹配的对象。如果不是,则返回None)。在

所以,我不太明白上面代码的if语句?谁能给我解释一下吗?在


Tags: importreif源代码match语句spam条件
2条回答

Python使用“Truthy”和“Falsy”值。因此,任何匹配都是真实的,一个“无”都是假的。这个概念扩展到语言的许多地方,例如检查列表中是否有任何内容:

if []:
    print("True")
else:
    print("False")

将打印错误。在

有关详细信息,请查看this question。在

观察re.match的输出:

In [2473]: pattern = r"spam"

In [2474]: re.match(pattern, "spamspamspam")
Out[2474]: <_sre.SRE_Match object; span=(0, 4), match='spam'>

这将返回一个匹配对象。现在,如果我们改变一下我们的模式。。。在

^{pr2}$

基本上,None的真值是False,而对象的真值是{}。if条件评估结果的“真实性”,并相应地执行if主体。在

您的if条件可以重写一点,如下所示:

if re.match(pattern, "spamspamspam") is not None:
    ....

这个和if re.match(pattern, "spamspamspam")是一个相同的。在

如果您正在学习python,您应该知道如何评估对象的“真实性”。所有非空的数据结构都计算为True。所有空数据结构都是False。对象是True,而{}是{}。在

In [2482]: if {}:
      ...:     print('foo')
      ...: else:
      ...:     print('bar')
      ...:     
bar

In [2483]: if ['a']:
      ...:     print('foo')
      ...: else:
      ...:     print('bar')
      ...:     
foo

相关问题 更多 >