Java正则表达式之捕获组

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表示第一个捕获组里匹配的字符,比如.所匹配的是任意单个字符,则保留下来一个即可。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值