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

Con*_*ty8 4 java regex string repeat

什么是正则表达式模式来确定字符串是否仅由一个重复字符组成?

例如

"aaaaaaa"= true
"aaabbbb"= false
"$$$$$$$"= true

问题检查字符串是否仅包含重复字符(例如"aabb"),但我需要确定它是否是单个重复字符.

Bra*_*raj 9

您可以尝试使用后退参考

^(.)\1{1,}$
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

反向引用与先前由捕获组匹配的文本匹配.反向引用\1(反斜杠一)引用第一个捕获组.\1匹配第一个捕获组匹配的完全相同的文本.


在Java中你可以尝试

"aaaaaaaa".matches("(.)\\1+") // true
Run Code Online (Sandbox Code Playgroud)

没有必要^,$因为String.matches()查找整个字符串匹配.


Mat*_*att 6

这实际上取决于你的语言,但一般来说这会匹配一个具有相同字符的一行.

^(.)\1+$
Run Code Online (Sandbox Code Playgroud)

Regex101示例

  • ^ 断言开头的位置
  • 第一捕获组 (.)
  • \1+ 匹配与第一个捕获组Quantifier最近匹配的相同文本:+在一次和无限次之间,尽可能多次,根据需要返回[贪婪]
  • $ 在一条线的末尾断言位置