一尘不染

正则表达式以匹配重复的字符

go

我正在尝试创建一个匹配字符串的正则表达式,如果它连续有3个或多个重复字符(例如aaaaaa,testtttttt,otttttter)。

我尝试了以下方法:

regexp.Compile("[A-Za-z0-9]{3,}")
regexp.Compile("(.){3,}")
regexp.Compile("(.)\\1{3,}")

连续 匹配 任意 3个字符,但不 连续的 字符…我在哪里出错?


阅读 290

收藏
2020-07-02

共1个答案

一尘不染

您要的内容无法使用 真正的
正则表达式完成,您需要的是(不规则的)反向引用。尽管许多正则表达式引擎实现了它们,但Go使用的RE2却没有。RE2是一种快速的正则表达式引擎,可确保线性时间字符串处理,但是尚无已知方法以这种效率实现反向引用。(有关更多信息,请参见https://swtch.com/~rsc/regexp/。)

为了解决您的问题,您可能需要搜索其他正则表达式库。我相信可以找到PCRE的绑定,但是我没有亲身经历。

另一种方法是手动解析字符串,而不使用(不)正则表达式。

2020-07-02