用数字组拆分驼峰式文本

Split camel case text with number groups

我有包含驼峰式文本和数字的字符串,我想拆分它。

例如字符串 "abcDefGhi345J6" 应拆分为

["abc", "Def", "Ghi", "345", "J", "6"]

我最大的努力是

"abcDefGhi345J6".split("(?=\p{Lu})|(?!\p{Lu})(?=\d+)")

这给了我

["abc", "Def", "Ghi", "3", "4", "5", "J", "6"]

PS:欺骗标记的答案没有给出预期的输出,因为它们不是 Unicode 不可知论者。

您可以使用此正则表达式进行拆分:

(?=\p{Lu})|(?<!\d)(?=\d)

RegEx Demo

对于Java代码:

String[] arr = string.split("(?=\p{Lu})|(?<!\d)(?=\d)");

(?<!\d)(?=\d)会找到前面有数字但后面没有数字的位置。