Сродни обработке XML
с регулярными выражениями, это никогда не будет 100% правильным, если вы не задействуете правильный C
синтаксический анализатор. Но вы можете написать что-то, что будет правильным для большинства распространенных ситуаций и, возможно, всегда будет правильным для данного примера кода на C - особенно, если этот код генерируется автоматически.
Попробуйте это для начальной попытки, которая включает оба примера кода, которые вы опубликовали. Если вы хотите, чтобы мы помогли вам больше, пожалуйста, опубликуйте исчерпывающий пример того, что вы обрабатываете
use strict;
use warnings;
while (<DATA>) {
chomp;
(my $ptr = $_) =~ s/( \w+ \s* )\(/(*$1)(/x ;
print $ptr, "\n";
}
__DATA__
char * cc_Hightor_ind(Closed* p_Closed);
char cc_Hightor_ind(Closed* p_Closed);
OUTPUT
char * (*cc_Hightor_ind)(Closed* p_Closed);
char (*cc_Hightor_ind)(Closed* p_Closed);