如何在hello world中匹配字符串ello w
尝试此example时出现此错误
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发布于 2021-10-27 19:59:44
regexp.MatchString返回两个值。当您在if条件中使用它时,编译器会失败。
您应该首先分配返回值,然后处理错误情况,然后处理匹配情况
顺便说一句,您的正则表达式也有问题,请查看代码以获得适合您的情况的正确代码
https://play.golang.org/p/dNEsa9mIfhE
func 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)
} 发布于 2021-10-27 20:00:08
MatchString()返回两个值、一个布尔值和一个错误,所以if语句不知道如何处理它。https://pkg.go.dev/regexp#MatchString
在下面的更正中,我只是删除了错误值,但我建议实际检查和处理错误。
https://play.golang.org/p/awAFxxAMyWl
package 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))
} https://stackoverflow.com/questions/69744571
复制相似问题