JustAnswer's expert response composer accepts expressions containing nested grouping symbols and quoted text. Implement a validator that determines whether every bracket is correctly matched and nested, while ignoring bracket characters inside quoted strings.
Given a string expression, return True if it is valid and False otherwise. Valid expressions contain matching pairs of (), [], and {}. Brackets must be properly nested. Text outside brackets is allowed. A quoted string begins and ends with either a single quote (') or double quote ("), and brackets inside quoted strings are ordinary characters. A backslash escapes the next character inside a quoted string. An unterminated quoted string makes the expression invalid.
The function must process the expression in one left-to-right pass without removing characters or using regular expressions.
def has_balanced_brackets(expression):