[英]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
。 對象為True
, None
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.