共计 1002 个字符,预计需要花费 3 分钟才能阅读完成。
定义一个正则表达式
调用 regexp
下面的几个方法并传入一个正则的字符串形式的参数定义一个正则表达式
例如:regexp.MustCompile("\d")
Compile
CompilePOSIX
MustCompile
MustCompilePOSIX
方法概述
regexp 包中有 16 种方法来匹配正则表达式并标识匹配的文本,他们的名称可以使用这个正则来匹配
Find(All)?(String)?(Submatch)?(Index)?
如果存在 All
该函数将匹配整个表达式的连续非重叠匹配。方法返回的是一个包含非 all 值得切片,这个方法使用一个额外的参数整数参数 n, 如果 n > = 0,则该函数最多返回 n 个匹配项 / 子匹配项;否则,它返回所有匹配项 / 子匹配项。
如果存在 String
参数会是一个string
, 否则参数是一个 []byte
返回值也会相应的调整.
如果存在 Submatch
返回值是一个切片,用于标识表达式的连续子匹配项, 子匹配项是正则表达式中带括号的子表达式(也称为捕获组)的匹配项,按左括号的顺序从左到右编号。子匹配 0 是整个表达式的匹配项,子匹配 1 是第一个带括号的子表达式的匹配项,依此类推。
如果存在 Index
,则返回输入字符串匹配项和子匹配项字节索引对,result[2*n:2*n+1]
标识第 n 个子匹配项的索引,n==0
是整个表达式匹配的结果的索引对, 如果不存在Index
,则通过匹配 / 子匹配的文本识别匹配。
还有一些其他方法与此模式不匹配。
package main
import (
"fmt"
"regexp"
)
func main() {
// Compile the expression once, usually at init time.
// Use raw strings to avoid having to quote the backslashes.
var validID = regexp.MustCompile(`^[a-z]+\[[0-9]+\]$`)
fmt.Println(validID.MatchString("adam[23]"))
fmt.Println(validID.MatchString("eve[7]"))
fmt.Println(validID.MatchString("Job[48]"))
fmt.Println(validID.MatchString("snakey"))
}
翻译自 go regexp
regex syntex 正则语法
正文完