fork(1) download
  1. using System;
  2. using System.Text.RegularExpressions;
  3.  
  4. public class Test
  5. {
  6. public static void Main()
  7. {
  8. string testcase0 = @"fun(abc) fun3()";
  9. string testcase1 = @"fun(\\\)\)) fun3()";
  10. string testcase2 = @"fun(fun2(\)\\\() ) fun3()";
  11.  
  12. Regex catchRegex = new Regex(@"^fun\(((?:[^()\\]|\\.|(?<o>\()|(?<-o>\)))+(?(o)(?!)))\)(.*$)");
  13.  
  14. Console.WriteLine(catchRegex.Match(testcase0).Groups[1]); // 'abc'
  15. Console.WriteLine(catchRegex.Match(testcase0).Groups[2]); // ' fun3()'
  16.  
  17. Console.WriteLine(catchRegex.Match(testcase1).Groups[1]); // '\\\)\)'
  18. Console.WriteLine(catchRegex.Match(testcase1).Groups[2]); // ' fun3()'
  19.  
  20. Console.WriteLine(catchRegex.Match(testcase2).Groups[1]); // 'fun2(\)\\\()'
  21. Console.WriteLine(catchRegex.Match(testcase2).Groups[2]); // ' fun3()'
  22. }
  23. }
Success #stdin #stdout 0.08s 34168KB
stdin
Standard input is empty
stdout
abc
 fun3()
\\\)\)
 fun3()
fun2(\)\\\() 
 fun3()