簡體   English   中英

使用Python 3的條件語句中的正則表達式

[英]Regular Expression in conditional statement using Python 3

我正在Sololearn課程中自學Python 3。 我現在正在學習正則表達式。

這是源代碼:

import re

pattern = r"spam"

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

---根據Sololearn Python 3教程課程---

if語句中的條件使我很困惑。 據我所知,if語句中的條件應為布爾表達式。 但是,re.match函數確定它是否與字符串的開頭匹配,不返回布爾值(如果匹配,則該函數返回表示匹配的對象。如果不匹配,則返回None)。

因此,我不太了解上述代碼的if語句? 誰能給我一些解釋?

觀察re.match的輸出:

In [2473]: pattern = r"spam"

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

這將返回一個匹配對象。 現在,如果我們稍微改變一下模式...

In [2475]: pattern = r"ham"

In [2477]: print(re.match(pattern, "spamspamspam"))
None

基本上, None的真值是False ,而對象的真值是True if條件評估結果的“真實性”,並將相應地執行if主體。

您的if條件可以被重寫,如下所示:

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

這和if re.match(pattern, "spamspamspam")是否相同。

如果您正在學習python,則應該了解如何評估對象的“真實性”。 所有非空數據結構均評估為True 所有空數據結構均為False 對象為TrueNone False

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

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

Python使用'Truthy'和'Falsy'值。 因此,任何比賽都是真實的,而無比賽則是虛假的。 這個概念在語言中擴展到很多地方,例如檢查列表中是否有任何內容:

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

將打印錯誤。

查看此問題以獲取更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM