Java 若字符串只包含重复字符,那个么正则表达式是什么?
我已经经历过: 和 但在我的情况下,它们没有用处。如果我只想检查一个字符串是否包含重复字符(如1111、abccccd、12aaaa3b等),它们就可以了。我想检查的是字符串是否完全由重复字符组成,即aabb111、1111222、11222aaa等 有人能帮我解决这个问题吗?使用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
(()\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+
aaa
?如中所示,()(\1)*
?@EmilLundberg,它将为1
返回true。对于aaa111
,它也将返回false。对于非捕获外部组,该模式可能会更明显。@KiranParmar,您可以使用单词character\w。但它也匹配一个下划线(\)。看见
((.)\2+)+
^^
|+----- group 2
+----- group 1