这里有新鲜出炉的 GO 语言教程,程序狗速度看过来!
Go 是一种新的语言,一种并发的、带垃圾回收的、快速编译的语言。Go 是谷歌 2009 年发布的第二款编程语言。2009 年 7 月份,谷歌曾发布了 Simple 语言,它是用来开发 Android 应用的一种 BASIC 语言。
这篇文章主要介绍了 Go 语言正则表达式, 结合实例形式分析了 Go 语言正则表达式实现字符串的匹配、查找等相关操作技巧, 需要的朋友可以参考下
本文实例讲述了 Go 语言正则表达式。分享给大家供大家参考,具体如下:
- package main
- import "bytes"
- import "fmt"
- import "regexp"
- func main() {
- //这个测试一个字符串是否符合一个表达式。
- match,
- _: =regexp.MatchString("p([a-z]+)ch", "peach")
- fmt.Println(match)
- //上面我们是直接使用字符串,但是对于一些其他的正则任务,你需要使用 Compile 一个优化的 Regexp 结构体。
- r,
- _: =regexp.Compile("p([a-z]+)ch")
- //这个结构体有很多方法。这里是类似我们前面看到的一个匹配测试。
- fmt.Println(r.MatchString("peach"))
- //这是查找匹配字符串的。
- fmt.Println(r.FindString("peach punch"))
- //这个也是查找第一次匹配的字符串的,但是返回的匹配开始和结束位置索引,而不是匹配的内容。
- fmt.Println(r.FindStringIndex("peach punch"))
- //Submatch 返回完全匹配和局部匹配的字符串。例如,这里会返回 p([a-z]+)ch 和 `([a-z]+) 的信息。
- fmt.Println(r.FindStringSubmatch("peach punch"))
- //类似的,这个会返回完全匹配和局部匹配的索引位置。
- fmt.Println(r.FindStringSubmatchIndex("peach punch"))
- //带 All 的这个函数返回所有的匹配项,而不仅仅是首次匹配项。例如查找匹配表达式的所有项。
- fmt.Println(r.FindAllString("peach punch pinch", -1))
- //All 同样可以对应到上面的所有函数。
- fmt.Println(r.FindAllStringSubmatchIndex(
- "peach punch pinch", -1))
- //这个函数提供一个正整数来限制匹配次数。
- fmt.Println(r.FindAllString("peach punch pinch", 2))
- //上面的例子中,我们使用了字符串作为参数,并使用了如 MatchString 这样的方法。我们也可以提供 []byte参数并将 String 从函数命中去掉。
- fmt.Println(r.Match([] byte("peach")))
- //创建正则表示式常量时,可以使用 Compile 的变体MustCompile 。因为 Compile 返回两个值,不能用语常量。
- r = regexp.MustCompile("p([a-z]+)ch")
- fmt.Println(r)
- //regexp 包也可以用来替换部分字符串为其他值。
- fmt.Println(r.ReplaceAllString("a peach", "<fruit>"))
- //Func 变量允许传递匹配内容到一个给定的函数中,
- in :=[] byte("a peach")
- out: =r.ReplaceAllFunc( in , bytes.ToUpper)
- fmt.Println(string(out))
- }
返回结果:
- true true peach[0 5][peach ea][0 5 1 3][peach punch pinch][[0 5 1 3][6 11 7 9][12 17 13 15]][peach punch] true p([a - z] + ) ch a < fruit > a PEACH
希望本文所述对大家 Go 语言程序设计有所帮助。
来源: http://www.phperz.com/article/17/0724/320205.html