Что это значит » first_match = bool(текст) и шаблон[0] в {текст[0], ‘.’} » ? Это вопрос о сопоставлении регулярных выражений в python

#python-3.x

Вопрос:

     def match(text, pattern):
        if not pattern: return not text
        first_match = bool(text) and pattern[0] in {text[0], '.'}
        return first_match and match(text[1:], pattern[1:])
 

Я новичок в python и не понимаю синтаксиса. Какова цель элементов в фигурных скобках и что означает «bool(текст) и шаблон[0] в {text[0], ‘.’}»

Комментарии:

1. Это указывает на набор элементов

Ответ №1:

В python фигурные скобки используются для создания словаря или набора.

     my_set = {1, 2, 3}
    my_dict = {'a': 1, 'b': 2, 'c': 3}
 

bool(text) and pattern[0] in {text[0], '.'} проверяет, является ли текст истинным (т. Е. не пустым или ложным), и первый элемент в шаблоне либо равен тексту[0], либо является».»

Ответ №2:

Если бы мы разрушили вашу функцию на отдельные части, это было бы легче понять

 def match(text: str, pattern: str) -> bool:
    # if pattern is an empty string or None
    if not pattern:
        # True if text is empty string or None, otherwise - false
        result: bool = not text
        return result

    # If text is empty or None return False
    if not text:
        return False

    # Equivalent to set(first letter of text, dot)
    # We use set/{} instead of list/[] or tuple/() to remove duplicates, 
    # however i don't see why should we care about duplicated dots here
    subset: set = {text[0], '.'}

    # If first letter of pattern is not in subset, return False
    if pattern[0] not in subset:
       return False

    # Go one level deeper in recursion and return it's answer
    result: bool = match(text[1:], pattern[1:])
    return result
 

О фигурных скобках. В python они означают две вещи:

Перейдите по ссылкам, чтобы узнать больше из документов python