regex 正则表达式匹配精确的单词和边界

cigdeys3  于 2023-05-30  发布在  其他
关注(0)|答案(1)|浏览(154)

我使用golang正则表达式来匹配一个带边界的精确单词,例如“apple”,“co.”,我不能简单地使用\b,因为单词的末尾可能有非字母数字字符,例如“co”。
我试着这样做:

test := `(?i)\b(co.)(?:\s|$)`
re = regexp.MustCompile(test)
matches = re.FindAllString("co. is a secret shortcut ", -1)

但这个会给予我“co”“,我想直接得到“co.",我如何调整我的正则表达式来实现它。
先谢谢你了

5jdjgkvh

5jdjgkvh1#

您可以使用FindAllStringSubmatch给予访问捕获组:

package main
import ( "fmt"
        "regexp"
        )

func main(){
    // your code goes here
    test := `(?i)\b(co.)(?:\s|$)`
    re := regexp.MustCompile(test)
    matches := re.FindAllStringSubmatch("co. is a secret shortcut ", -1)
    for _, match := range matches {
        fmt.Printf("'%s'", match[1])
    }
}

输出:

'co.'

Demo on ideone

相关问题