亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

正則表達式匹配重復字符

正則表達式匹配重復字符

Go
Helenr 2021-12-20 10:51:09
如果字符串中有 3 個或更多重復字符(例如 aaaaaa、testtttttt、otttttter),我正在嘗試創建一個匹配字符串的正則表達式。我嘗試了以下方法:regexp.Compile("[A-Za-z0-9]{3,}")regexp.Compile("(.){3,}")regexp.Compile("(.)\\1{3,}")連續匹配任意3 個字符,但不匹配連續字符...我哪里出錯了?
查看完整描述

3 回答

?
慕無忌1623718

TA貢獻1744條經驗 獲得超4個贊

你所要求的不能用真正的正則表達式來完成,你需要的是(不規則的)反向引用。雖然許多正則表達式引擎實現了它們,但 Go 使用的 RE2 沒有。RE2 是一個快速的正則表達式引擎,可以保證線性時間字符串處理,但是沒有已知的方法可以以這種效率實現反向引用。(有關更多信息,請參閱https://swtch.com/~rsc/regexp/。)

要解決您的問題,您可能需要搜索其他一些正則表達式庫。我相信可以找到 PCRE 的綁定,但我沒有個人經驗。

另一種方法是在不使用 (ir) 正則表達式的情況下手動解析字符串。


查看完整回答
反對 回復 2021-12-20
?
絕地無雙

TA貢獻1946條經驗 獲得超4個贊

由于上述問題,我最終確定了以下非正則表達式解決方案:


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

}


查看完整回答
反對 回復 2021-12-20
?
萬千封印

TA貢獻1891條經驗 獲得超3個贊

這是丑陋的解決方案,您可以自動生成它:

A{3,}|B{3,}|...|Z{3,}|a{3,}|b{3,}|...|z{3,}|0{3,}|1{3,}|...|9{3,}


查看完整回答
反對 回復 2021-12-20
  • 3 回答
  • 0 關注
  • 255 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號