Go 正则表达式

定义一个正则表达式

调用regexp 下面的几个方法并传入一个正则的字符串形式的参数定义一个正则表达式
例如 :regexp.MustCompile("d")

Copy
Compile
CompilePOSIX
MustCompile
MustCompilePOSIX

方法概述

regexp包中有16种方法来匹配正则表达式并标识匹配的文本,他们的名称可以使用这个正则来匹配

Copy
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,则通过匹配/子匹配的文本识别匹配。

还有一些其他方法与此模式不匹配。

Copy
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"))
}
 
每天逼着自己写点东西,终有一天会为自己的变化感动的。这是一个潜移默化的过程,每天坚持编编故事,自己不知不觉就会拥有故事人物的特质的。 Explicit is better than implicit.(清楚优于含糊)
原文地址:https://www.cnblogs.com/kylin5201314/p/14945257.html