- 1
(class|struct|union)[\s\r\n(\w+)]*?(\w*)[\s\r\n]*?(:[\s\r\n(virtual)]*?\w+[\s\r\n]*?\w+(<\s*\w*\s*>)?([\s\r\n]*?,[\s\r\n(virtual)]*?\w+[\s\r\n]*?\w+(<\s*\w*\s*>)?)*?)?[\s\r\n]*?{[^{}]*(((?'open'{)[^{}]*)+((?'close-open'})[^{}]*)+)*(?(Open)(?!))[^{}]*}\s*?;