Java 如何编写正则表达式;所有字符都相同;?

Java 如何编写正则表达式;所有字符都相同;?,java,regex,Java,Regex,我希望它能匹配: aaaaaa bb c 但不是: aaabaaa cd …使用反向引用: (.)(\1)* 读取:将任何字符后跟同一字符匹配0次或更多次 根据regexp引擎和您的需要,您可能希望锚定regex以仅匹配整个字符串,而不是子字符串。假设regex引擎支持反向引用 ^(.)\1*$ 在Java中是这样的 theString.matches("(.)\\1*") 如果您想捕获您匹配的内容,它是^(()\2*)$,您可以使用背景参考: (\w+)\s+\1 它检查由空格分隔

我希望它能匹配:

aaaaaa
bb
c
但不是:

aaabaaa
cd

使用反向引用:

(.)(\1)*
读取:将任何字符后跟同一字符匹配0次或更多次


根据regexp引擎和您的需要,您可能希望锚定regex以仅匹配整个字符串,而不是子字符串。

假设regex引擎支持反向引用

^(.)\1*$

在Java中是这样的

theString.matches("(.)\\1*")

如果您想捕获您匹配的内容,它是
^(()\2*)$

,您可以使用背景参考:

(\w+)\s+\1


它检查由空格分隔的重复单词。

尝试java,但System.out.println(“1111111.matches”(“^()\1*$”);打印错误。@Julio:Try
“^(.)\\1*$”
,带有两个反斜杠。@Kenny:java
^
$
中的字符表示行的开始和结束,而不是字符串。默认情况下,正则表达式匹配也被锚定。所以只要“(..\\1*”就可以了。@sepp2k:默认情况下,
^
$
匹配字符串的开头和结尾,而不是行。当启用
(?m)
标志时,它们与行的开头和结尾匹配。但是当使用
String.matches(…)
时,
^
$
是不需要的:默认情况下,
matches(…)
将匹配整个输入字符串。@Bart:the say“^行的开头”和“$行的结尾”正在尝试Java,但System.out.println(“1111111.matches”(()(\1)*”);印刷品false@Julio:您需要在java中双重转义,即使用
\\1
而不是
\1
。什么正则表达式应该用于相反的目的?我需要正则表达式不匹配像“22222”或“aaaaaaa”这样的值