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

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

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

输出结果:

true

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

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

输出结果:

false

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

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

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

result := reg1.FindAllString("test nb na", -1) //参数负1表示查找所有的结果
fmt.Printf("%v\n", result)
fmt.Printf("%v-%v-%v\n", 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("%v\n", result2)
fmt.Printf("%v\n", 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(`<span\s*property="v:itemreviewed">(.*)</span>`)
	res := reg.FindAllStringSubmatch(string(sHtml), -1)
	fmt.Println(res[0][1]) //[0][1]表示第一个捕获的元素,[0][2]表示第二个捕获的元素

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

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

大黄蜂 Bumblebee
7.1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xuanwenchao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值