拆分正则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式不消耗字符。