String output = input.replaceAll("(\\p{Ll})(\\p{Lu})","$1 $2");
此正则表达式搜索后跟大写字母的小写字母,并将其替换为前者,空格和后者(有效地用空格分隔)。它将它们中的每一个置于捕获组()
中,以便能够通过反向引用($1
和$2
)重用替换字符串中的值。
为了找到大写和小写字母,它使用\p{Ll}
和\p{Lu}
(而不是[a-z]
和[A-Z]
),因为它处理 所有的 大写和小写字母在Unicode标准,而不仅仅是在ASCII范围内的那些(统一的正则表达式这个漂亮的解释主要是适用于Java的以及)。