From my point of view, using a regular expression is an engineering overkill. Fact is that regular expressions were designed for complex operations on strings, and getting the text between a separator (or "special character", as you call it) is not considered a complex operation. All of the major frameworks which (basically 99% of all languages) provide a string class also provide a method to split a string by a separator.
In C#, you can achieve what you want in the following way:
using System;
public class SplitTest {
public static void Main() {
string yourString= "-aaa-bbb-ccc-ddd-eee-fff-ggg-hhh-iii-jjj-kkk-lll-"
string [] split = words.Split(new Char [] {'-'}, StringSplitOptions.RemoveEmptyEntries);
foreach (string s in split) {
Console.WriteLine(s);
}
}
}