Je ne pouvais pas obtenir aix la solution de travail (et il ne fonctionne pas sur RegExr soit), alors je suis venu avec moi, que je l'ai testé et semble faire exactement ce que vous cherchez:
((^[a-z]+)|([A-Z]{1}[a-z]+)|([A-Z]+(?=([A-Z][a-z])|($))))
et voici un exemple d'utilisation:
; Regex Breakdown: This will match against each word in Camel and Pascal case strings, while properly handling acrynoms.
; (^[a-z]+) Match against any lower-case letters at the start of the string.
; ([A-Z]{1}[a-z]+) Match against Title case words (one upper case followed by lower case letters).
; ([A-Z]+(?=([A-Z][a-z])|($))) Match against multiple consecutive upper-case letters, leaving the last upper case letter out the match if it is followed by lower case letters, and including it if it's followed by the end of the string.
newString := RegExReplace(oldCamelOrPascalString, "((^[a-z]+)|([A-Z]{1}[a-z]+)|([A-Z]+(?=([A-Z][a-z])|($))))", "$1 ")
newString := Trim(newString)
Ici, je suis en séparant chaque mot d'un espace, alors voici quelques exemples de la façon dont la chaîne est transformé:
- ThisIsATitleCASEString => Ceci Est Un Titre de CAS de la Chaîne
- andThisOneIsCamelCASE => et C'Est Un Chameau CAS
Cette solution ci-dessus n'est que le post original demande, mais j'ai aussi besoin de regex pour trouver chameau et pascal chaînes qui inclus de nombres, de sorte que j'en suis venu à cette variation d'inclure les numéros:
((^[a-z]+)|([0-9]+)|([A-Z]{1}[a-z]+)|([A-Z]+(?=([A-Z][a-z])|($)|([0-9]))))
et un exemple d'utilisation:
; Regex Breakdown: This will match against each word in Camel and Pascal case strings, while properly handling acrynoms and including numbers.
; (^[a-z]+) Match against any lower-case letters at the start of the command.
; ([0-9]+) Match against one or more consecutive numbers (anywhere in the string, including at the start).
; ([A-Z]{1}[a-z]+) Match against Title case words (one upper case followed by lower case letters).
; ([A-Z]+(?=([A-Z][a-z])|($)|([0-9]))) Match against multiple consecutive upper-case letters, leaving the last upper case letter out the match if it is followed by lower case letters, and including it if it's followed by the end of the string or a number.
newString := RegExReplace(oldCamelOrPascalString, "((^[a-z]+)|([0-9]+)|([A-Z]{1}[a-z]+)|([A-Z]+(?=([A-Z][a-z])|($)|([0-9]))))", "$1 ")
newString := Trim(newString)
Et voici quelques exemples de la façon dont une chaîne de caractères avec des chiffres est transformé avec cette regex:
- myVariable123 => ma Variable 123
- my2Variables => mes 2 Variables
- The3rdVariableIsHere => Les 3 rdVariable Est Ici
- 12345NumsAtTheStartIncludedToo => 12345 Nums Au Début Aussi Inclus