拆分正则表达式以提取连续字符的字符串

Boh*_*ian 20 java regex split

是否有一个正则表达式可以将String.split()字符串分解成连续的字符 - 即分割下一个字符与前一个字符不同的地方?

这是测试用例:

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

预期产量:

[aaa, bb, c, dd, eee]
Run Code Online (Sandbox Code Playgroud)

虽然测试用例只有字母作为输入,但这只是为了清晰起见; 输入字符可以是任何字符.


请不要提供涉及循环或其他技术的"解决方法".

问题是为代码找到正确的正则表达式,如上所示 - 即只使用split()而不使用其他方法调用.找到能够"完成工作"的代码并不是问题.

nha*_*tdh 28

完全有可能在一步中编写用于拆分的正则表达式:

"(?<=(.))(?!\\1)"
Run Code Online (Sandbox Code Playgroud)

由于您希望在每组相同的字符之间进行拆分,因此我们只需要查找两组之间的边界.我通过使用正面的后视来获取前一个字符,并使用负前瞻和后引用来检查下一个字符是不是相同的字符.

正如您所看到的,正则表达式是零宽度(只有2个查看断言).正则表达式不会消耗任何字符.