Je l'ai fait il y a quelque temps. Il fait correspondre chaque composant d'un nom CamelCase.
/([A-Z]+(?=$|[A-Z][a-z])|[A-Z]?[a-z]+)/g
Par exemple :
"SimpleHTTPServer" => ["Simple", "HTTP", "Server"]
"camelCase" => ["camel", "Case"]
Pour convertir cela, il suffit d'insérer des espaces entre les mots :
Regex.Replace(s, "([a-z](?=[A-Z])|[A-Z](?=[A-Z][a-z]))", "$1 ")
Edit : Autoriser les lettres initiales en minuscules (c'est à dire "lowerCamelCase"
), comme l'a souligné Drew Noakes. Le seul changement est un "?"
après après le dernier "[A-Z]"
.