3 回答

TA貢獻(xiàn)1744條經(jīng)驗(yàn) 獲得超4個(gè)贊
你所要求的不能用真正的正則表達(dá)式來(lái)完成,你需要的是(不規(guī)則的)反向引用。雖然許多正則表達(dá)式引擎實(shí)現(xiàn)了它們,但 Go 使用的 RE2 沒(méi)有。RE2 是一個(gè)快速的正則表達(dá)式引擎,可以保證線性時(shí)間字符串處理,但是沒(méi)有已知的方法可以以這種效率實(shí)現(xiàn)反向引用。(有關(guān)更多信息,請(qǐng)參閱https://swtch.com/~rsc/regexp/。)
要解決您的問(wèn)題,您可能需要搜索其他一些正則表達(dá)式庫(kù)。我相信可以找到 PCRE 的綁定,但我沒(méi)有個(gè)人經(jīng)驗(yàn)。
另一種方法是在不使用 (ir) 正則表達(dá)式的情況下手動(dòng)解析字符串。

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超4個(gè)贊
由于上述問(wèn)題,我最終確定了以下非正則表達(dá)式解決方案:
norm = "this it a ttttt"
repeatCount := 1
thresh := 3
lastChar := ""
for _, r := range norm {
c := string(r)
if c == lastChar {
repeatCount++
if repeatCount == thresh {
break
}
} else {
repeatCount = 1
}
lastChar = c
}

TA貢獻(xiàn)1891條經(jīng)驗(yàn) 獲得超3個(gè)贊
這是丑陋的解決方案,您可以自動(dòng)生成它:
A{3,}|B{3,}|...|Z{3,}|a{3,}|b{3,}|...|z{3,}|0{3,}|1{3,}|...|9{3,}
- 3 回答
- 0 關(guān)注
- 256 瀏覽
添加回答
舉報(bào)