Почему функция 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('(]'))
Стоило сразу описать, что хотели своей регуляркой находить (что должно было удовлетворять условиям, а что нет). Как уже заметили тут в комментариях, в текущем виде она по большому счету не работает. Но и подсказать, как исправить, толком нельзя, т.к. даже не указали, что хотели сделать.
Для правильного вопроса надо знать половину ответа
Пустая строка попадает под вашу регулярку. Соответственно, при любой строке в s регулярка будет истинной. Если вы хотите проверить, что строка состоит только из пары совпадающих скобок, то ^(?:\(\)|\[\]|\{\})$
Чем больше знаю, тем лучше понимаю, как мало знаю.
Потому что у вас выражение "если есть пара круглых скобок (может быть, а может и не быть), а сразу после идёт пара квадратных скобок (могут быть, но могут и не быть), а за ними пара фигурных скобок (могут быть, а могут и не быть)". И ваша строка (] с этим RegExp даст false, потому что в ней нет ни (), ни [], ни {}.