有没有一个正则表达式可以和String.split()
一起使用来将字符串拆分成连续的字符-即拆分下一个字符与前一个字符不同的地方?
下面是测试用例:
String regex = "your answer here";
String[] parts = "aaabbcddeee".split(regex);
System.out.println(Arrays.toString(parts));
预期输出:
[aaa, bb, c, dd, eee]
虽然测试用例只有字母作为输入,但这只是为了清楚起见;输入的字符可以是任何字符。
请不要提供涉及循环或其他技术的“变通办法”。
问题是为上面显示的代码找到正确的正则表达式-即只使用split()
而不使用其他方法调用。这不是一个关于寻找能够“完成工作”的代码的问题。
发布于 2012-11-28 10:17:20
完全可以在一个步骤中编写拆分的正则表达式:
"(?<=(.))(?!\\1)"
因为你想在每一组相同的字符之间拆分,我们只需要寻找两组之间的边界。我通过使用正向回溯来获取前一个字符,并使用负向向前和向后引用来检查下一个字符是否与前一个字符不同,从而实现这一点。
如您所见,正则表达式是零宽度的(只有2个左右的断言)。正则表达式不使用任何字符。
https://stackoverflow.com/questions/13596454
复制相似问题