2015-11-18 46 views
-3

可以解释为什么匹配playgolang regexp.matchString有什么问题?

来源:

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的新手

+3

*不是golang的regexp.MatchString完全匹配吗?*不,它不是。 –

+0

有没有完全匹配的功能? – toolchainX

+0

只需在表达式中添加锚点:'^ [a-z] + $' –

回答

2

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

转到郎regexp package比赛根据语法意义的正则表达式搜索文本。没有一种方法本身试图将正则表达式与整个搜索文本进行匹配,如果不能,则放弃,除非正则表达式定义整个搜索文本匹配是所需的行为。

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

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

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

+0

谢谢,很好地解释了 – toolchainX

+0

@toolchainX - 谢谢!你的问题对我来说似乎是合理的,所以我并不真正理解没有任何与现有答案或网络链接的倒票。使用Go祝你好运;恕我直言,这是一个可爱的语言。 – gbulmer