我正在尝试创建一个匹配字符串的正则表达式,如果它连续有3个或更多重复字符(例如aaaaaa,testtttttt,otttttter).
我尝试过以下方法:
regexp.Compile("[A-Za-z0-9]{3,}")
regexp.Compile("(.){3,}")
regexp.Compile("(.)\\1{3,}")
Run Code Online (Sandbox Code Playgroud)
它匹配一行中的任何 3个字符,但不是连续的字符......我哪里错了?
什么你问不能做到真正的正则表达式,你需要的是(不规则)反向引用.虽然许多正则表达式引擎实现它们,但Go使用的RE2却没有.RE2是一个快速的regexp引擎,可以保证线性时间字符串处理,但是没有已知的方法来实现具有这种效率的反向引用.(有关详细信息,请参阅https://swtch.com/~rsc/regexp/.)
要解决您的问题,您可能需要搜索其他一些正则表达式库.我相信可以找到PCRE的绑定,但我没有他们的个人经验.
另一种方法是手动解析字符串而不使用(ir)正则表达式.