fork download
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text.RegularExpressions;
  4. public class Test
  5. {
  6. public static void Main()
  7. {
  8. var s = "AABCBACBCCAACCB AABCBACBCCAACCB AABBBAABCCAACCB";
  9. var rx = new Regex("(?=(?<value>(?:(?<A>A)|(?<B>B)|(?<C>C)){3}(?<-A>)(?<-B>)(?<-C>)))");
  10. var m = rx.Match(s);
  11. while (m.Success)
  12. {
  13. var list = new List<string>();
  14. list.Add(m.Groups["value"].Value);
  15. s = s.Substring(m.Groups["value"].Index+m.Groups["value"].Length-1);
  16. m = rx.Match(s);
  17. if (m.Success && m.Groups["value"].Index == 0)
  18. {
  19. list.Add(m.Groups["value"].Value);
  20. s = s.Substring(m.Groups["value"].Index+m.Groups["value"].Length-1);
  21. m = rx.Match(s);
  22. if (m.Success && m.Groups["value"].Index == 0)
  23. {
  24. list.Add(m.Groups["value"].Value);
  25. Console.WriteLine(string.Join(", ", list));
  26. s = s.Substring(m.Groups["value"].Index+m.Groups["value"].Length-1);
  27. m = rx.Match(s);
  28. }
  29. }
  30. }
  31. }
  32. }
Success #stdin #stdout 0.12s 24696KB
stdin
Standard input is empty
stdout
ABC, CBA, ACB
ABC, CBA, ACB