それを理解しようとしてあまりにも多くの時間を費やした後、これをあきらめて、他の誰かがやりたいかどうか見てみようと思いました!
3 つ以上の連続する大文字がある場合、最後の連続する大文字の前にスペースを挿入する正規表現が必要です。
例:
A = A
AB = AB
ABC = AB C
ABCD = ABC D
abCdefGHijkLMNop = abCdefGHijkLM Nop
この正規表現は以下をグループ化します:
([A-Z]{2,})([A-Z]+)
次に、グループ1、スペース、グループ2を出力するだけです
交換品
string output=Regex.Replace(input, @"(?<=[A-Z]{2})(?=[A-Z][^A-Z]|[A-Z]$)", " ");
チェーンの最後の 2 つの大文字の間の長さゼロのポイントをスペースで「置換」します。つまり、スペースを挿入します。
string str = "ABC";
str = Regex.Replace(str, @"([A-Z]{2,})([A-Z])", "$1 $2");
Console.WriteLine(str); // "AB C"