拆分正则expression式来提取连续字符的string

是否有一个正则expression式可以与String.split()一起使用将一个string分解成连续的字符 – 也就是说,将下一个字符与前一个字符不同的地方分开?

这里是testing用例:

  String regex = "your answer here"; String[] parts = "aaabbcddeee".split(regex); System.out.println(Arrays.toString(parts)); 

预期产出:

 [aaa, bb, c, dd, eee] 

虽然testing用例只有字母作为input,但这只是为了清楚起见; input的字符可以是任何字符。


请不要提供涉及循环或其他技术的“解决方法”。

问题是如上所示为代码find正确的正则expression式 – 即只使用split()和其他方法调用。 这不是一个关于寻找能够“做这份工作”的代码的问题。

编写正则expression式可以一步完成:

 "(?<=(.))(?!\\1)" 

既然你想分割每一组相同的字符,我们只需要寻找2组之间的边界。 我通过使用积极的后视来抓住前一个字符,并使用负向前视和后视图来检查下一个字符是不是相同的字符。

正如你所看到的,正则expression式是零宽度的(只有2看看断言)。 正则expression式不消耗字符。