Go语言正则表达式的使用(VSCode for mac) - Go语言中文社区

Go语言正则表达式的使用(VSCode for mac)


1、首先看一下标准的字节数组匹配用法

isok, _ := regexp.Match("[a-zA-Z]{3}", []byte("abc"))
fmt.Printf("%vn", isok) //true

输出结果:

true

2、测试看一下标准的字符串匹配用法

isok, _ = regexp.MatchString("[a-zA-Z]{3}", "ab2d")
fmt.Printf("%vn", isok) //false

输出结果:

false

3、测试正则表达式对匹配结果的获取

使用字符串或键盘左上角的点效果一样的,只是不需要转义处理

//reg := regexp.MustCompile("\w+")
reg1 := regexp.MustCompile(`w+`)

result := reg1.FindAllString("test nb na", -1) //参数负1表示查找所有的结果
fmt.Printf("%vn", result)
fmt.Printf("%v-%v-%vn", result[0], result[1], result[2])

返回结果实际是字符串数组,三个单词各为一个元素
输出结果:

[test nb na]
test-nb-na

4、测试正则表达式捕获结果的的用法

reg2 := regexp.MustCompile(`^a(.*)z$`)
result2 := reg2.FindAllStringSubmatch("atest nbz naz", -1)
fmt.Printf("%vn", result2)
fmt.Printf("%vn", result2[0][1])

[0][1]表示第一个捕获的元素,也就是对应 (.*)这个所匹配的子串;
返回结果应该是 a开头与z结尾中间的部分,输出结果如下:

[[atest nbz naz test nbz na]]
test nbz na

5、使用正则表达提取网页中的内容

测试网址为:https://movie.douban.com/subject/26394152/?from=showing
网页内容如下:
在这里插入图片描述
测试提供电影的标题名称,和评分

func main() {
	url := "https://movie.douban.com/subject/26394152/?from=showing"
	resp, err := http.Get(url)
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()

	sHtml, _ := ioutil.ReadAll(resp.Body)

	reg := regexp.MustCompile(`<spans*property="v:itemreviewed">(.*)</span>`)
	res := reg.FindAllStringSubmatch(string(sHtml), -1)
	fmt.Println(res[0][1]) //[0][1]表示第一个捕获的元素,[0][2]表示第二个捕获的元素

	reg = regexp.MustCompile(`<strongs*class="lls*rating_num"s*property="v:average">(.*)</strong>`)
	res = reg.FindAllStringSubmatch(string(sHtml), -1)
	fmt.Println(res[0][1])

正则表达式中 s* 表示可以有任意个空格,(.*)表示要捕获的元素字符串
执行后输出结果如下:

大黄蜂 Bumblebee
7.1
版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/xuanwenchao/article/details/86711993
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-04-19 10:08:22
  • 阅读 ( 1721 )
  • 分类:Go

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢