using System; using System.Text.RegularExpressions; public class Test { public static void Main() { var regexFormat = @"{0}(?=\()((?>/\*.*?\*/)|(?>@""(""""|[^""])*"")|(?>""(\\""|[^""])*"")|\r?\n|[^()""]|(?\()|(?<-open>\)))+?(?(open)(?!))"; var input = "var res = \"abc\" + Foo.myFunc(foo, \nBar.otherFunc( Baz.funk()));\nSomeOtherCode Foo.myFunc(.\r\n..)"; Console.WriteLine(Regex.Replace(input, string.Format(regexFormat, @"Foo\.myFunc"), @"""def""")); var inputTrollMe = @"var res = ""abc"" + trollMe(""\""("", ""(("", @""abc""""de((f"")"; Console.WriteLine(Regex.Replace(inputTrollMe, string.Format(regexFormat, @"trollMe"), @"""def""")); var inputTrollMeAgain = @"var res = ""abc"" + Foo.myFunc(0 /* "") */)"; Console.WriteLine(Regex.Replace(inputTrollMeAgain, string.Format(regexFormat, @"Foo.myFunc"), @"""def""")); } }