Хотя Regex и даст вам хорошие результаты, они никогда не дадут вам идеальных результатов.
Большинство движков регулярных выражений не поддерживают понятие рекурсии. То есть он не может соответствовать ни одному типу выражения, которое требует подсчета (соответствующие скобки, символы скобок и т. Д.). Это означает, что он не сможет соответствовать typedef, который надежно указывает на указатель на функцию.
Чтобы получить идеальные совпадения, вам действительно нужно написать парсер.
Я думаю, что лучший подход - это выбрать сценарии, которые вас больше всего интересуют, и написать регулярные выражения, предназначенные для этих конкретных сценариев.
Например, здесь есть регулярное выражение, которое будет соответствовать определениям типов структур, которые указывают на одно имя и могут иметь или не иметь указатель.
"^\s*typedef\s+struct\s+\w+\s+((\*?\s*)\w+)\s*;\s*$"