# Matches a PowerShell Hashtable
\@                   # Starts with at sign
(?<BalancedCurlyBracket>
\{                   # An open {
(?>                  # Followed by...
    [^\{\}]+|        # any number of non-bracket character OR
    \{(?<Depth>)|    # an open curly bracket (in which case increment depth) OR
    \}(?<-Depth>)    # a closed curly bracket (in which case decrement depth)
)*?(?(Depth)(?!))    # until depth is 0.
\}                   # followed by a }
)

