正则表达式匹配(如果不匹配,则返回不...)

时间:2019-01-04 10:06:21

标签: python python-3.x

这是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:])

我只希望有人解释第一个逻辑。谢谢。

2 个答案:

答案 0 :(得分:0)

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)   |
|---------------------------------------|

答案 1 :(得分:0)

当您在“ if”语句中添加内容时,应该被评估为布尔值。

if not pattern
对于此“非模式”为“ true”,应将

均值模式评估为false。 然后,返回“ not text”,再次将其评估为布尔值

一些例子:

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

str = ""
>> not str
>> true

模式“如果”:

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

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