确定字符串是否仅包含单个重复字符的正则表达式模式是什么?
e.g。
“aaaaaaa”= true
“aaabbbb”= false
“$$$$$$$”= 是的
This问题检查字符串是否只包含重复字符(例如“aabb”)但是我需要确定它是否是单个重复字符。
答案 0 :(得分:8)
您可以尝试使用back reference
^(.)\1{1,}$
模式说明:
^ the beginning of the string
( group and capture to \1:
. any character except \n
) end of \1
\1{1,} what was matched by capture \1 (at least 1 times)
$ the end of the string
反向引用匹配先前与捕获组匹配的相同文本。反向引用\1
(反斜杠一)引用第一个捕获组。 \1
匹配第一个捕获组匹配的完全相同的文本。
在Java中,您可以尝试
"aaaaaaaa".matches("(.)\\1+") // true
不需要^
和$
,因为String.matches()
会查找整个字符串匹配。
答案 1 :(得分:6)
这实际上取决于您的语言,但一般情况下,这将匹配具有相同字符的一行。
^(.)\1+$
^
在行的开头断言位置(.)
\1+
匹配与第一个捕获组最近匹配的文本相同的文本
量词:+在一次和无限次之间,尽可能多次,根据需要回馈[贪心] $
在行尾声明位置