using System;
using System.Text.RegularExpressions;
public class Test
{
public static void Main()
{
var regexFormat = @"{0}(?=\()((?>/\*.*?\*/)|(?>@""(""""|[^""])*"")|(?>""(\\""|[^""])*"")|\r?\n|[^()""]|(?<open>\()|(?<-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"""));
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uVGV4dC5SZWd1bGFyRXhwcmVzc2lvbnM7CgpwdWJsaWMgY2xhc3MgVGVzdAp7CglwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCgl7CgkJdmFyIHJlZ2V4Rm9ybWF0ID0gQCJ7MH0oPz1cKCkoKD8+L1wqLio/XCovKXwoPz5AIiIoIiIiInxbXiIiXSkqIiIpfCg/PiIiKFxcIiJ8W14iIl0pKiIiKXxccj9cbnxbXigpIiJdfCg/PG9wZW4+XCgpfCg/PC1vcGVuPlwpKSkrPyg/KG9wZW4pKD8hKSkiOwoKICAgICAgICAgICAgdmFyIGlucHV0ID0gInZhciByZXMgPSBcImFiY1wiICsgRm9vLm15RnVuYyhmb28sIFxuQmFyLm90aGVyRnVuYyggQmF6LmZ1bmsoKSkpO1xuU29tZU90aGVyQ29kZSBGb28ubXlGdW5jKC5cclxuLi4pIjsKICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoUmVnZXguUmVwbGFjZShpbnB1dCwgc3RyaW5nLkZvcm1hdChyZWdleEZvcm1hdCwgQCJGb29cLm15RnVuYyIpLCBAIiIiZGVmIiIiKSk7CgogICAgICAgICAgICB2YXIgaW5wdXRUcm9sbE1lID0gQCJ2YXIgcmVzID0gIiJhYmMiIiArIHRyb2xsTWUoIiJcIiIoIiIsICIiKCgiIiwgQCIiYWJjIiIiImRlKChmIiIpIjsKICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoUmVnZXguUmVwbGFjZShpbnB1dFRyb2xsTWUsIHN0cmluZy5Gb3JtYXQocmVnZXhGb3JtYXQsIEAidHJvbGxNZSIpLCBAIiIiZGVmIiIiKSk7CiAgICAgICAgICAgIAogICAgICAgICAgICB2YXIgaW5wdXRUcm9sbE1lQWdhaW4gPSBAInZhciByZXMgPSAiImFiYyIiICsgRm9vLm15RnVuYygwIC8qICIiKSAqLykiOwogICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZShSZWdleC5SZXBsYWNlKGlucHV0VHJvbGxNZUFnYWluLCBzdHJpbmcuRm9ybWF0KHJlZ2V4Rm9ybWF0LCBAIkZvby5teUZ1bmMiKSwgQCIiImRlZiIiIikpOwoJfQp9