Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 正则表达式匹配(如果不…返回不…)_Python_Python 3.x - Fatal编程技术网

Python 正则表达式匹配(如果不…返回不…)

Python 正则表达式匹配(如果不…返回不…),python,python-3.x,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 pa

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

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

非模式
如果模式为空,则计算结果为True,否则为False

非文本
如果文本为空,则计算结果为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”语句中时,应将is计算为布尔值

if not pattern
意味着模式应评估为false,以使此“非模式”为“true”。 然后,返回“not text”,该值再次计算为布尔值

一些例子:

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

str = ""
>> not str
>> true
“如果”模式:


它的计算结果为true,即使pattern/text为None,而不仅仅是emptyYes,如果它是“falsy”。我假设两者都是
str
类型。谢谢您的帮助。很好的解释。
pattern = "some_pattern"
if not pattern:
    print("no pattern")  # nothing be printed

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