using System.Text.RegularExpressions;
public static void Main()
string source_small = @"<ol><li>asdsklfdjs</li></ol>";
string source = @"<b>Some Initial Content was in this textarea</b><div><b><i>test</i></b></div><div>test</div><div><u>test</u></div><div><u><br></u></div><div><ol><li><u>fdsklfdjs</u></li><li><u>fdjklfdjlfjs</u></li><li><u>fdsjklkfjdslfjds</u></li><li><u>fdjslkfjdslfjdslfds</u></li><ol><li><u>flkdsjflkdsjlfds</u></li><li><u>fdsjlfsdjlfdsjlfds</u></li><li><u>fsdjlkfdsjlfdsjlfds</u></li><li><u>jfdsljfdskljfdlsfds</u></li><ol><li><u>djsklfdsjlfjsd</u></li><li><u>fsdjlklkfsdjsldf</u></li><li><u>fdsjkllfsdjflsd</u></li><ul><li><u>fdsflkdsjflds</u></li><li><u>fdsljkfsdjlfsd</u></li><li><u>fdsjlfsdjfds</u></li><li><u>fdslkjfdslfdsl</u></li><ul><li><u>fdkjslfdjlfjs</u></li><li><u>fdsjlfldsjflsdj</u></li><li><u>fsdjlfjsdfsdjl</u></li></ul><li><u>dsjlfdjsfjlsdfsjflkldsjflsd</u></li><li><u>fdsjlfsd</u></li><li><u>fdsjlkfsdjlfsfdsj</u></li></ul><li><u>fjdslfkjsdjfsld</u></li><li><u>fsldjfdskljfsdl</u></li></ol><li><u>fdjslfdjslfsdj</u></li></ol><li><u>jldfsjfdslfjldfsjfds</u></li><li><u>fdsjlfjdslfjdsfjsdl</u></li><li><u>fjdsljfkdsljfkldsjfdsl</u></li></ol><div><u><br></u></div></div><div><u>fsdjlkfjdslfjdslfjdslkjfldksjflsd</u></div>";
Console.WriteLine(StripULList(StripOLList(source_small)));
private static string StripOLList(string source)
string patternOL = @"<(ol)\s[^\>]*>(<li>.*?</li>)+?</\1>";
string trg = Regex.Replace(source, patternOL, (param) =>
if (param.Groups[1].Value.Equals("ol"))
foreach (Capture c in param.Groups[2].Captures)
output += String.Format("{0}. {1}\n", i++, Regex.Replace(c.Value, "<li>(.*?)</li>", "$1"));
private static string StripULList(string source)
string patternUL = @"<(ul)\s[^\>]*>(<li>.*?</li>)+?</\1>";
string trg = Regex.Replace(source, patternUL, (param) =>
if (param.Groups[1].Value.Equals("ul"))
foreach (Capture c in param.Groups[2].Captures)
output += String.Format("{0} {1}\n", "-", Regex.Replace(c.Value, "<li>(.*?)</li>", "$1"));