是否有正则表达式可以使用String.split()
将字符串分解为连续的字符 - 即分割下一个字符与前一个字符不同的位置?
以下是测试用例:
String regex = "your answer here";
String[] parts = "aaabbcddeee".split(regex);
System.out.println(Arrays.toString(parts));
预期产出:
[aaa, bb, c, dd, eee]
虽然测试用例只有字母作为输入,但这只是为了清楚起见;输入字符可以是任何字符。
请不要提供涉及循环或其他技术的“解决方法”。
问题是为代码找到正确的正则表达式,如上所示 - 即仅使用split()
而没有其他方法调用。这不是一个关于找到能够“完成工作”的代码的问题。
答案 0 :(得分:26)
完全有可能在一步中编写用于拆分的正则表达式:
"(?<=(.))(?!\\1)"
由于您想要在每组相同的字符之间进行拆分,我们只需要查找两组之间的边界。我通过使用正面的后视来获取前一个字符,并使用负前瞻和后引用来检查下一个字符是不是同一个字符。
正如您所看到的,正则表达式是零宽度(只有2个查看断言)。正则表达式不会消耗任何字符。