Java正则表达式之捕获组
- 需求
1.三个同样的字母连在一起,一定是拼写错误,去掉一个的就好啦:比如helllo->hello
2.两对一样的字母(AABB型)连在一起,一定是拼写错误,去掉第二对的一个字母就好啦:比如helloo->hello
3.上面的规则优先“从左到右”匹配,即如果是AABBCC,虽然AABB和BBCC都是错误拼写,应该优先考虑修复AABB,结果为AABCC。 - 解决
String str = "heoolloooo";
System.out.println(str.replaceAll("(.)\\1+","$1$1").replaceAll("(.)\\1(.)\\2","$1$1$2"));
其中()为捕获组,.表示匹配除"\r\n"之外的任何单个字符。\1表示匹配第一个捕获组字母个数大于1但小于等于2的位置,\1+表示大于等于2的字符个数,$1表示第一个捕获组里匹配的字符,比如.所匹配的是任意单个字符,则保留下来一个即可。