私はaixのソリューションを機能させることができませんでした(そしてそれはRegExrでも機能しません)、それで私は私がテストしたものを思いつきました、そしてあなたが探していることを正確に行うようです:
((^[a-z]+)|([A-Z]{1}[a-z]+)|([A-Z]+(?=([A-Z][a-z])|($))))
これを使用する例を次に示します。
; 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)
ここでは、各単語をスペースで区切っているので、文字列がどのように変換されるかの例を次に示します。
- ThisIsATitleCASEString =>これはタイトルのCASE文字列です
- andThisOneIsCamelCASE =>そしてこれはキャメルケースです
上記のこのソリューションは、元の投稿が要求することを実行しますが、数字を含むラクダとパスカルの文字列を見つけるために正規表現も必要だったので、数字を含めるためにこのバリエーションも考え出しました。
((^[a-z]+)|([0-9]+)|([A-Z]{1}[a-z]+)|([A-Z]+(?=([A-Z][a-z])|($)|([0-9]))))
およびその使用例:
; 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)
そして、数字を含む文字列がこの正規表現でどのように変換されるかの例をいくつか示します。
- myVariable123 =>私の変数123
- my2Variables => my2変数
- The3rdVariableIsHere => 3つのrdVariableはここにあります
- 12345NumsAtTheStartIncludedToo => 12345開始時のNumsも含まれています
^
、ネガティブルックビハインドの大文字の条件付き修飾子と別の条件付き大文字小文字が必要になるようです。確かなテストはしていませんが、問題を解決するための最善の策だと思います。