fork download
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Text.RegularExpressions;
  6.  
  7. public class Test
  8. {
  9. public static void Main()
  10. {
  11. var dct = new Dictionary<string, string>();
  12. dct.Add("aa", "0");
  13. dct.Add("a1", "1");
  14. dct.Add("ab", "2");
  15. dct.Add("rr", "3");
  16. dct.Add("r0", "4");
  17. dct.Add("s0", "5");
  18. dct.Add("s1", "6");
  19. dct.Add("s2", "7");
  20. dct.Add("st", "8");
  21. dct.Add("ss", "9");
  22. dct.Add("lt", "10");
  23. dct.Add("ll", "11");
  24. var pat = $@"\b(?:{string.Join("|",dct.Keys.Select(k => Regex.Escape(k)).OrderByDescending(x => x.Length))})\b";
  25. Console.WriteLine(pat);
  26. var input ="aa a1 ab rr r0 s0 s1 s2 st ss lt ll lllllllrt";
  27. var output = Regex.Replace(input, pat, m => dct[m.Value]);
  28. Console.Write(output);
  29. }
  30. }
  31.  
Success #stdin #stdout 0.09s 31952KB
stdin
Standard input is empty
stdout
\b(?:aa|a1|ab|rr|r0|s0|s1|s2|st|ss|lt|ll)\b
0 1 2 3 4 5 6 7 8 9 10 11 lllllllrt