public override string[] Split(string identifier) {
//remove any non-word or non-digit characters
var id = nonWord.Replace(identifier, " ");
//split numbers from letters
id = numLet.Replace(id, "$1 $2");
id = numLet2.Replace(id, "$1 $2");
//split lowercase to uppercase
id = lowerUpper.Replace(id, "$1 $2");
//split uppercase to lowercase
//final uppercase letter is put with lowercase ones
id = upperLower.Replace(id, "$1 $2");
return id.Split(new[] {' '}, StringSplitOptions.RemoveEmptyEntries);
}