@LycorisSU

Почему функция re.search не возвращает None при пустой строке и как придать False значение пустому выводу от re.search?

Функция не читает объект типа re.Match для проверки равенства. (line6)

import re

def isValid(s):
    result = re.search(r'(\(\))?(\[\])?(\{\})?', s)
    print(result)
    if result == '':
        return False
    else:
        return True



print(isValid('(]'))
  • Вопрос задан
  • 94 просмотра
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Пустая строка попадает под вашу регулярку. Соответственно, при любой строке в s регулярка будет истинной. Если вы хотите проверить, что строка состоит только из пары совпадающих скобок, то ^(?:\(\)|\[\]|\{\})$
Ответ написан
Комментировать
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Потому что у вас выражение "если есть пара круглых скобок (может быть, а может и не быть), а сразу после идёт пара квадратных скобок (могут быть, но могут и не быть), а за ними пара фигурных скобок (могут быть, а могут и не быть)". И ваша строка (] с этим RegExp даст false, потому что в ней нет ни (), ни [], ни {}.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы