第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

如何選擇具有自定義單詞邊界的第一個字符?

如何選擇具有自定義單詞邊界的第一個字符?

Go
PIPIONE 2023-07-31 15:22:04
我用一系列這樣的單詞進(jìn)行了測試用例:    {        input:    "Halley's Comet",        expected: "HC",    },    {        input:    "First In, First Out",        expected: "FIFO",    },    {        input:    "The Road _Not_ Taken",        expected: "TRNT",    },我希望用一個正則表達(dá)式來匹配這些單詞的所有第一個字母,避免 char: "_" 作為第一個字母匹配,并計算單詞中的單引號。目前,我有這個正則表達(dá)式適用于 pcre 語法,但不適用于 Go regexp 包:(?<![a-zA-Z0-9'])([a-zA-Z0-9'])我知道 Go 不支持環(huán)視,但我正在尋找一種好方法來做到這一點。我還使用這個函數(shù)來獲取所有字符串的數(shù)組:re.FindAllString(s, -1)謝謝你的幫助。
查看完整描述

2 回答

?
暮色呼如

TA貢獻(xiàn)1853條經(jīng)驗 獲得超9個贊

處理字符類和單詞邊界的東西應(yīng)該足夠了:


\b_*([a-z])[a-z]*(?:'s)?_*\b\W*

演示


用法:


package main


import (

    "fmt"

    "regexp"

)


func main() {

    re := regexp.MustCompile(`(?i)\b_*([a-z])[a-z]*(?:'s)?_*\b\W*`)

    fmt.Println(re.ReplaceAllString("O'Brian's dog", "$1"))


}


查看完整回答
反對 回復(fù) 2023-07-31
?
慕尼黑5688855

TA貢獻(xiàn)1848條經(jīng)驗 獲得超2個贊

ftr,少正則表達(dá)式的解決方案


package main


import (

    "fmt"

)


func main() {

    inputs := []string{"Hall?????ey's Comet", "First In, First Out", "The Road _Not_ Taken", "O'Brian's Dog"}

    c := [][]string{}

    w := [][]string{}

    for _, input := range inputs {

        c = append(c, firstLet(input))

        w = append(w, words(input))

    }

    fmt.Printf("%#v\n", w)

    fmt.Printf("%#v\n", c)

}


func firstLet(in string) (out []string) {

    var inword bool

    for _, r := range in {

        if !inword {

            if isChar(r) {

                inword = true

                out = append(out, string(r))

            }

        } else if r == ' ' {

            inword = false

        }

    }

    return out

}


func words(in string) (out []string) {

    var inword bool

    var w []rune

    for _, r := range in {

        if !inword {

            if isChar(r) {

                w = append(w, r)

                inword = true

            }

        } else if r == ' ' {

            if len(w) > 0 {

                out = append(out, string(w))

                w = w[:0]

            }

            inword = false

        } else if r != '_' {

            w = append(w, r)

        }

    }

    if len(w) > 0 {

        out = append(out, string(w))

    }

    return out

}


func isChar(r rune) bool {

    return (r >= 'a' && r <= 'z') || (r >= 'A' && r <= 'Z')

}

輸出


[][]string{[]string{"Hall?????ey's", "Comet"}, []string{"First", "In,", "First", "Out"}, []string{"The", "Road", "Not", "Taken"}, []string{"O'Brian's", "Dog"}}

[][]string{[]string{"H", "C"}, []string{"F", "I", "F", "O"}, []string{"T", "R", "N", "T"}, []string{"O", "D"}}



查看完整回答
反對 回復(fù) 2023-07-31
  • 2 回答
  • 0 關(guān)注
  • 175 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號