我正在尝试创建一个匹配字符串的正则表达式,如果它连续有3个或多个重复字符(例如aaaaaa,testtttttt,otttttter)。
我尝试了以下方法:
regexp.Compile("[A-Za-z0-9]{3,}") regexp.Compile("(.){3,}") regexp.Compile("(.)\\1{3,}")
连续 匹配 任意 3个字符,但不 连续的 字符…我在哪里出错?
您要的内容无法使用 真正的 正则表达式完成,您需要的是(不规则的)反向引用。尽管许多正则表达式引擎实现了它们,但Go使用的RE2却没有。RE2是一种快速的正则表达式引擎,可确保线性时间字符串处理,但是尚无已知方法以这种效率实现反向引用。(有关更多信息,请参见https://swtch.com/~rsc/regexp/。)
为了解决您的问题,您可能需要搜索其他正则表达式库。我相信可以找到PCRE的绑定,但是我没有亲身经历。
另一种方法是手动解析字符串,而不使用(不)正则表达式。