簡體   English   中英

正則表達式匹配(如果不匹配,則返回不)

[英]Regular expression matching (if not … return not…)

這是leetcode問題的解決方案:正則表達式匹配。

我正在研究這種遞歸方法,但不太了解第一種情況的邏輯。 “如果沒有模式:不返回文本”是什么意思?

def isMatch(self, text, pattern):
    if not pattern:
        return not text

    first_match = bool(text) and pattern[0] in {text[0], '.'}

    if len(pattern) >= 2 and pattern[1] == '*':
        return (self.isMatch(text, pattern[2:]) or
                first_match and self.isMatch(text[1:], pattern))
    else:
        return first_match and self.isMatch(text[1:], pattern[1:])

我只希望有人解釋第一個邏輯。 謝謝。

如果模式為空,則not pattern計算結果為True,否則為False。

如果文本為空,則not text計算結果為True,否則為False。

if not pattern: return not text因此表示:如果模式為空,則如果文本也為空,則返回True。 否則返回False。

混淆矩陣:

|Pattern \ Text  |  empty   | non-empty |
|---------------------------------------|
|empty           |  True    |  False    |
|---------------------------------------|
|non-empty       | (rest of the code)   |
|---------------------------------------|

當您將某些內容放入“ if”語句時,應被評估為布爾值。

if not pattern

表示模式應被評估為false,此“非模式”為“真”。 然后,返回“ not text”,再次將其評估為布爾值

一些例子:

str = "bla"
>> not str
>> false 

str = ""
>> not str
>> true

模式“ if”:

pattern = "some_pattern"
if not pattern:
    print("no pattern")  # nothing be printed

pattern = ""
if not pattern:
    print("no pattern")
>> no pattern

暫無
暫無

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

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