This question has already been answered:
Write a program that checks the correctness of a bracket expression with four kinds of brackets: (), [], {} and <>.
input = '*+/=?^_`{|}~-+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9])' brackets = [('(', ')'), ('[', ']'), ('{', '}')] def check(input, brackets): stack = [] for ch in input: for br in brackets: if br[0] == ch: stack.append(ch) break elif br[1] == ch: if stack and br[0] == stack.pop(): break else: return False print(check(input, brackets))