Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
正则表达式在Java中查找相同字符是否重复3次或更多次_Java_Regex - Fatal编程技术网

正则表达式在Java中查找相同字符是否重复3次或更多次

正则表达式在Java中查找相同字符是否重复3次或更多次,java,regex,Java,Regex,我的要求是只使用Java正则表达式来检查给定字符串中是否包含相同的字符,该字符在字符串中连续重复了3次以上 对于ex: "hello" -> false "ohhhhh" -> true "whatsuppp" -> true 您可以使用以下正则表达式解决您的问题: ^.*(.)\1\1.*$ 解释 ^字符串的起点 *任意字符0到N次 ()捕获组中的一个字符,将由反向引用使用 \1返回对捕获角色的引用(我们称之为两次以强制执行3次重复约束) *任意字符0到N次 $输入字符

我的要求是只使用Java正则表达式来检查给定字符串中是否包含相同的字符,该字符在字符串中连续重复了3次以上

对于ex:

"hello"  -> false
"ohhhhh" -> true
"whatsuppp" -> true

您可以使用以下正则表达式解决您的问题:

^.*(.)\1\1.*$
解释

  • ^
    字符串的起点
  • *
    任意字符0到N次
  • ()
    捕获组中的一个字符,将由反向引用使用
  • \1
    返回对捕获角色的引用(我们称之为两次以强制执行3次重复约束)
  • *
    任意字符0到N次
  • $
    输入字符串的结尾
  • 我在以下方面进行了测试:

    hello -> false
    ohhhhh -> true
    whatsuppp -> true
    aaa -> true
    aaahhhahj -> true
    abcdef -> false
    abceeedef -> true
    
    最后但并非最不重要的一点是,您必须在正则表达式中的每个反斜杠
    \
    之前添加一个反斜杠
    \
    ,然后才能在Java代码中使用它

    这将为您提供以下原型Java代码:

      ArrayList <String> strVector = new ArrayList<String>();
      strVector.add("hello");
      strVector.add("ohhhhh");
      strVector.add("whatsuppp");
      strVector.add("aaa");
      strVector.add("aaahhhahj");
      strVector.add("abcdef");
      strVector.add("abceeedef");
    
      Pattern pattern = Pattern.compile("^.*(.)\\1\\1.*$");
      Matcher matcher;        
    
      for(String elem:strVector)
      {
        System.out.println(elem);
        matcher = pattern.matcher(elem);
        if (matcher.find())System.out.println("Found you!");
        else System.out.println("Not Found!");
      }
    

    您可以使用以下正则表达式解决您的问题:

    ^.*(.)\1\1.*$
    
    解释

  • ^
    字符串的起点
  • *
    任意字符0到N次
  • ()
    捕获组中的一个字符,将由反向引用使用
  • \1
    返回对捕获角色的引用(我们称之为两次以强制执行3次重复约束)
  • *
    任意字符0到N次
  • $
    输入字符串的结尾
  • 我在以下方面进行了测试:

    hello -> false
    ohhhhh -> true
    whatsuppp -> true
    aaa -> true
    aaahhhahj -> true
    abcdef -> false
    abceeedef -> true
    
    最后但并非最不重要的一点是,您必须在正则表达式中的每个反斜杠
    \
    之前添加一个反斜杠
    \
    ,然后才能在Java代码中使用它

    这将为您提供以下原型Java代码:

      ArrayList <String> strVector = new ArrayList<String>();
      strVector.add("hello");
      strVector.add("ohhhhh");
      strVector.add("whatsuppp");
      strVector.add("aaa");
      strVector.add("aaahhhahj");
      strVector.add("abcdef");
      strVector.add("abceeedef");
    
      Pattern pattern = Pattern.compile("^.*(.)\\1\\1.*$");
      Matcher matcher;        
    
      for(String elem:strVector)
      {
        System.out.println(elem);
        matcher = pattern.matcher(elem);
        if (matcher.find())System.out.println("Found you!");
        else System.out.println("Not Found!");
      }
    

    php中的同一个问题没有被否决,相同的正则表达式在不同语言中的工作方式略有不同。上面评论中的链接证明了这一点。如果有人投了反对票,应该有明确的理由,IMHO。php中相同问题的可能重复未投反对票相同的正则表达式在不同语言中的工作方式略有不同。上面评论中的链接证明了这一点。如果有人投了反对票,应该有明确的理由,IMHO。对于那些想要检测相同数字是否重复3次或更多的人,使用正则表达式:
    ^[0-9]*([0-9])\1\1[0-9]*$
    对于那些想要检测相同数字是否重复3次或更多的人,使用正则表达式:
    ^[0-9]*([0-9])\1\1[0-9]*$