而不是描述我想要的东西(很难解释),让我提供一个示例,说明我需要使用正则表达式在C#中完成的任务:
"HelloWorld" should be transformed to "Hello World"
"HelloWORld" should be transformed to "Hello WO Rld" //Two consecutive letters in capital should be treatead as one word
"helloworld" should be transformed to "helloworld"
Run Code Online (Sandbox Code Playgroud)
编辑:
"HellOWORLd" should be transformed to "Hell OW OR Ld"
Run Code Online (Sandbox Code Playgroud)
每两个连续的大写字母应被视为一个单词.
这可能吗?
这是完全有效的C#代码,而不仅仅是正则表达式:
Console.WriteLine(
Regex.Replace(
"HelloWORld",
"(?<!^)(?<wordstart>[A-Z]{1,2})",
" ${wordstart}", RegexOptions.Compiled));
Run Code Online (Sandbox Code Playgroud)
它打印:
Hello WO Rld
Run Code Online (Sandbox Code Playgroud)
更新
为了使其更符合UNICODE /国际,请考虑替换[A-Z]为\p{Lt}(意味着UNICODE代码点代表大写字母).当前输入的结果是相同的.所以这是一个更引人注目的例子:
Console.WriteLine(Regex.Replace(
@"ÉclaireürfØÑJßå",
@"(?<!^)(?<wordstart>\p{Lu}{1,2})",
@" ${wordstart}",
RegexOptions.Compiled));
Run Code Online (Sandbox Code Playgroud)