首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >拆分正则表达式以提取连续字符的字符串

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

Stack Overflow用户
提问于 2012-11-28 09:46:42
回答 1查看 3.2K关注 0票数 23

有没有一个正则表达式可以和String.split()一起使用来将字符串拆分成连续的字符-即拆分下一个字符与前一个字符不同的地方?

下面是测试用例:

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

预期输出:

[aaa, bb, c, dd, eee]

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

请不要提供涉及循环或其他技术的“变通办法”。

问题是为上面显示的代码找到正确的正则表达式-即只使用split()而不使用其他方法调用。这不是一个关于寻找能够“完成工作”的代码的问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-28 10:17:20

完全可以在一个步骤中编写拆分的正则表达式:

"(?<=(.))(?!\\1)"

因为你想在每一组相同的字符之间拆分,我们只需要寻找两组之间的边界。我通过使用正向回溯来获取前一个字符,并使用负向向前和向后引用来检查下一个字符是否与前一个字符不同,从而实现这一点。

如您所见,正则表达式是零宽度的(只有2个左右的断言)。正则表达式不使用任何字符。

票数 31
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13596454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档