using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text.RegularExpressions; public class Test { public static void Main() { var text = @"(void)memcpy(&a[0],(void * )hihi, (UBYTE) V_SIZE); (void) memcpy((VOID*)abc, (const VOID*) dafa, (uint8)NUMBER_SIZE); (void )memcpy( (void *)p, &abc, (uint8)DATE_SIZE); "; var pattern = @"(?i)\(\s*((?:const\s+)?(?:u?(?:byte|int)\d*|void)(?:\s*\*)?)\s*\)\s*(\w+(?:\((?>[^()]+|(?)\(|(?<-c>)\))*\))?)"; string tmp = string.Empty; do { tmp = text; text = Regex.Replace(text, pattern, "static_cast<$1>($2)"); } while (text != tmp); Console.WriteLine(text); } }