正则表达式求助、关于重复字符组的判断。

java语言里面关于重复字符组的判断。比如,我想测试出javava、ohahahae,OHnonononogod、这种中间某段字符串重复的类型。但是,程序不知道到底是什么... java语言里面关于重复字符组的判断。
比如,我想测试出
javava、ohahahae,OHnonononogod、这种中间某段字符串重复的类型。
但是,程序不知道到底是什么重复。
想要达成的结果。
1,获取重复的字符。
2,获取重复的次数。
3,获取重复的位置。
虽然使用java代码可可以实现,但是,能给我个正则的代码么?
展开
 我来答
紫薇参星
科技发烧友

2019-05-26 · 有一些普通的科技小锦囊
知道大有可为答主
回答量:5983
采纳率:92%
帮助的人:3579万
展开全部

正则表达式可以判断出重复的字符,但是无法给出重复的次数和重复位置,所以还需要自己来编程解决

完整的Java程序如下

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class AA {

 public static void main(String[] args) {

  String str="OHnonononogod";

  String regex="([A-Za-z]+?)\\1+";

  Pattern p = Pattern.compile(regex);

  Matcher m = p.matcher(str);

  while(m.find()){

   String duplicate=m.group(1);

   int times=0,start=0,po;

   while((po=str.indexOf(duplicate,start))!=-1){

    start=po+duplicate.length();

    times++;

   }

   int position=str.indexOf(m.group(0));

   System.out.println(str);

   System.out.println("重复的字符:"+duplicate);

   System.out.println("重复的次数:"+times);

   System.out.println("重复的位置:"+(position+1)+"-"+start);

  }

 }

}

GTA小鸡
高粉答主

2019-05-26 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2.6万
采纳率:78%
帮助的人:1.3亿
展开全部
这个问题叫做最长重复子串,它可以用穷举所有子串的方式暴力求解,当然效率很低。高效的方式是使用KMP算法求解next[]数组或者使用后缀数组。这是字符串算法中的一个经典问题,可以百度“最长重复子串”看具体的求解思路。
仅凭正则表达式是不可能解决这个问题的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式