Java 若字符串只包含重复字符,那个么正则表达式是什么?

Java 若字符串只包含重复字符,那个么正则表达式是什么?,java,regex,string,Java,Regex,String,我已经经历过: 和 但在我的情况下,它们没有用处。如果我只想检查一个字符串是否包含重复字符(如1111、abccccd、12aaaa3b等),它们就可以了。我想检查的是字符串是否完全由重复字符组成,即aabb111、1111222、11222aaa等 有人能帮我解决这个问题吗?使用(()\2+)+作为模式: String pattern = "((.)\\2+)+"; System.out.println("a".matches(pattern)); // false Syste

我已经经历过: 和

但在我的情况下,它们没有用处。如果我只想检查一个字符串是否包含重复字符(如1111、abccccd、12aaaa3b等),它们就可以了。我想检查的是字符串是否完全由重复字符组成,即aabb111、1111222、11222aaa等

有人能帮我解决这个问题吗?

使用
(()\2+)+
作为模式:

String pattern = "((.)\\2+)+";
System.out.println("a".matches(pattern));        // false
System.out.println("1aaa".matches(pattern));     // false
System.out.println("aa".matches(pattern));       // true
System.out.println("aabb111".matches(pattern));  // true
System.out.println("1111222".matches(pattern));  // true
System.out.println("11222aaa".matches(pattern)); // true
System.out.println("etc.".matches(pattern));     // false
关于模式:

  • (…)
    :将匹配的零件捕获为组。(从1开始)

  • ()
    :匹配任何字符(换行符除外),并将其捕获为组2(因为它位于圆括号之后)
  • \2
    :反向引用匹配的组。如果
    ()
    匹配了一个字符
    x
    \2
    匹配了另一个
    x
    (不是任何字符,只是
    x
  • 模式+
    :匹配一个或多个模式匹配项
  • ()\2+
    :匹配重复字符

重复的字符必须是相邻的吗?您的意思是说每个字符都应该正确重复?是 啊字符串应仅包含重复的字符。因此,与正则表达式模式good stuff+1相比,像111222az这样的字符串不应该返回true,但可能是一个可以解释的想法;您正在使用反向插入器。这是否真的匹配
aaa
?如中所示,
()(\1)*
?@EmilLundberg,它将为
1
返回true。对于
aaa111
,它也将返回false。对于非捕获外部组,该模式可能会更明显。@KiranParmar,您可以使用单词character\w。但它也匹配一个下划线(\)。看见
((.)\2+)+
^^ 
|+----- group 2
+----- group 1