RegEx/C/Struct.regex.txt

# Matches a C/C++ Struct
(?-i)struct # Starts with a literal struct
\s{1,} # Followed by whitespace
(?<Identifier>[_a-zA-Z][_a-zA-Z0-9]{1,}) # Followed by an identifier
[\s\n\r]{0,} # Followed by optional whitespace
(?<Comment>//.+[\r\n])? # Followed by an optional comment
[\s\n\r]{0,} # Followed by optional whitespace
(?<Values>(?<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 }
)
) # Followed by balanced curly braces