using System.Collections.Generic;
public static IEnumerable<string> ReverseSplit(string input, int limit = 6)
var temp = new StringBuilder();
for (int i = input.Length - 1; i >= 0; i--)
if (input[i] == '_' && limit > 0)
yield return temp.ToString();
temp.Insert(0, input[i]);
yield return temp.ToString();
public static void Main()
var input = "Name_with_underscore_specific_SiteID_CountryID_PageID_DeviceID_PageName";
foreach (var data in ReverseSplit(input))