当前位置: 首页 > 知识库问答 >
问题:

java中提取字符串中连续重复字符的REGEX

诸葛雅达
2023-03-14

示例:

1)“aaabbaa”:b和a
2)“aabbaa”:a和b和a
3)“abba”:b

我尝试的代码:

String str=“aabbbbcccd”;
Pattern p=Pattern.compile(“(\w){2}”);
匹配器m=p.Matcher(str);
当(m.find())
{
system.out.println(M.group(1));

}

输出:
A
B
B
C
d
虽然,希望的输出是
A
d

Postscript
正如我最近开始使用regex一样,如果回答者能简要解释
使用的regex(特别是量词和组),我将非常感谢。

共有1个答案

昝涛
2023-03-14

对于这个问题,没有单一的普通regex解决方案,因为您需要一个内部带有backreference的lookbehind,而Java regex引擎不支持它。

您可以做的是获取所有(\w)\1+匹配项,然后使用常见的字符串方法检查它们的长度:

String s = "aaabbaa";
Pattern pattern = Pattern.compile("(\\w)\\1+");
Matcher matcher = pattern.matcher(s);
while (matcher.find()){
    if (matcher.group().length() == 2) System.out.println(matcher.group(1)); 
} 

(参见Java演示)或者您可以匹配3个或更多的重复,或者只匹配2个重复,只有在组2匹配的情况下才抓取匹配:

String s = "aaabbaa";
Pattern pattern = Pattern.compile("(\\w)\\1{2,}|(\\w)\\2");
Matcher matcher = pattern.matcher(s);
while (matcher.find()){
    if (matcher.group(2) != null)
        System.out.println(matcher.group(2)); 
} 
    null
 类似资料:
  • 问题内容: 我正在致力于Twitter数据标准化。Twitter用户经常使用诸如此类的术语来强调“爱”一词。我希望通过替换重复的字符,直到获得合适的有意义的词,将这样的重复字符变成一个适当的英语单词(我知道通过这种机制我无法区分善与恶)。 我的策略是 识别此类重复字符串的存在。我会寻找两个以上相同的字符,因为可能没有一个英文单词包含两个以上的重复字符。 在诸如Wordnet之类的词典中搜索此类单词

  • 我想从字符串中消除连续重复,如 这是我的密码 我得到了错误非穷举模式,我想这是第二行的错误,当只剩下1个字符时,程序不知道如何处理。我该怎么修?

  • 问题内容: 在一次采访中,要求用Java编写代码以显示没有连续重复字符的字符串。 例如:谷歌,苹果,亚马逊;它应该显示“ Amazon” 我写了代码,发现继续重复char。有什么算法或有效的方法可以找到它吗? 问题答案: class replace { 逻辑:将字符串中的字符与上一个字符进行匹配。 如果找到string [i] == string [i-1]。打破循环。选择下一个字符串。 如果您到

  • 我有以下格式的字符串: 让str=“url(#123456)”; 我的字符串中只有数字。它可以在任何地方。我想从上面的字符串中提取数字。 我正在使用es6。

  • 我正在以JSON字符串的形式从数据库中获取数据: 如何从给定的JSON字符串中提取公司名称?