是否有一个正则表达式可以将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个查看断言).正则表达式不会消耗任何字符.