正则表达式确定字符串是否是单个重复字符

时间:2015-03-20 03:37:20

标签: java regex string repeat

确定字符串是否仅包含单个重复字符的正则表达式模式是什么?

e.g。

  

“aaaaaaa”= true
“aaabbbb”= false
“$$$$$$$”=   是的

This问题检查字符串是否只包含重复字符(例如“aabb”)但是我需要确定它是否是单个重复字符。

2 个答案:

答案 0 :(得分:8)

您可以尝试使用back reference

^(.)\1{1,}$

DEMO

模式说明:

  ^                        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+$

Regex101 Example

  • ^在行的开头断言位置
  • 第一个捕获小组(.)
  • \1+匹配与第一个捕获组最近匹配的文本相同的文本 量词:+在一次和无限次之间,尽可能多次,根据需要回馈[贪心]
  • $在行尾声明位置