golang中的正则表达式匹配

你如何匹配ello w字符串hello world

尝试此示例时遇到此错误

package main 


import (

    "fmt"

    "regexp"


)


func check(result string  ) string {

    

    if (regexp.MatchString("b\\ello w\\b",result)) {

        fmt.Println("Found it ")

        return "True"

    } else {

        return "False"

    }

}


func main() {

    text := "Hello world "

    check (text)

    


引发以下错误


# command-line-arguments

.\test.go:14:5: multiple-value regexp.MatchString() in single-value context


慕虎7371278
浏览 205回答 2
2回答

有只小跳蛙

regexp.MatchString返回两个值。当您在if条件中使用它时,编译器会失败。您应该首先分配返回值,然后处理错误情况,然后处理匹配情况顺便说一句,您的正则表达式也有问题,请查看代码以获取适合您情况的正确代码https://play.golang.org/p/dNEsa9mIfhEfunc check(result string  ) string {    // faulty regex       // m, err := regexp.MatchString("b\\ello w\\b",result)    m, err := regexp.MatchString("ello w",result)    if err != nil {      fmt.Println("your regex is faulty")      // you should log it or throw an error       return err.Error()    }    if (m) {        fmt.Println("Found it ")        return "True"    } else {        return "False"    }}func main() {    text := "Hello world "    check(text)} 

catspeake

MatchString() 返回 2 个值,一个布尔值和一个错误,因此您的 if 语句不知道如何处理它。https://pkg.go.dev/regexp#MatchString在下面的更正中,我只是排除了错误值,但我建议实际检查和处理错误。https://play.golang.org/p/awAFxxAMyWlpackage main import (    "fmt"    "regexp")func check(result string  ) string {    found, _:= regexp.MatchString(`ello w`,result)    if (found) {        fmt.Println("Found it ")        return "True"    } else {        return "False"    }}func main() {        text := "Hello world "    fmt.Println(check(text))    } 
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go