golang regexp.matchString出了什么问题?

时间:2015-11-18 12:51:45

标签: go

任何人都可以解释为什么这匹配play

来源:

package main

import "fmt"
import "regexp"

func main() {
    match, _ := regexp.MatchString("[a-z]+", "test?")
    fmt.Printf("the result of match: %v", match)
}

golang的regexp.MatchString是否完全匹配?我无法理解,我是golang的新手

1 个答案:

答案 0 :(得分:2)

正则表达式“[a-z] +”将匹配“test”是搜索文本“test?” 同样,它将匹配“测试测试”,“2001 a 空间oddessy”等。

Go lang的regexp package根据正则表达式的语法含义匹配搜索文本。没有本身尝试将正则表达式与整个搜索文本匹配的方法,如果不能,则放弃,除非正则表达式定义了整个搜索文本匹配是必需的行为。

正则表达式的语法确实能够匹配整个搜索文本。

'^',正则表达式开头的起始锚符号强制匹配包含搜索文本的开头。
'$',正则表达式末尾的结束锚符号强制匹配包含搜索文本的结尾。
它们在正则表达式中的其他位置具有不同的含义。

正如@TomCooper评论的那样,在正在寻找的正则表达式模式周围使用开始和结束锚点。这些将封闭的正则表达式锚定到搜索文本的开头和结尾,以确保整个搜索文本与正则表达式匹配。