作者:远洋箭 | 来源:互联网 | 2023-06-04 20:10
1、首先看一下标准的字节数组匹配用法
isok, _ := regexp.Match("[a-zA-Z]{3}", []byte("abc"))
fmt.Printf("%vn", isok)
输出结果:
true
2、测试看一下标准的字符串匹配用法
isok, _ = regexp.MatchString("[a-zA-Z]{3}", "ab2d")
fmt.Printf("%vn", isok)
输出结果:
false
3、测试正则表达式对匹配结果的获取
使用字符串或键盘左上角的点效果一样的,只是不需要转义处理
reg1 := regexp.MustCompile(`w+`)
result := reg1.FindAllString("test nb na", -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(`(.*)`)
res := reg.FindAllStringSubmatch(string(sHtml), -1)
fmt.Println(res[0][1])
reg = regexp.MustCompile(`(.*)`)
res = reg.FindAllStringSubmatch(string(sHtml), -1)
fmt.Println(res[0][1])
正则表达式中 s* 表示可以有任意个空格,(.*)表示要捕获的元素字符串
执行后输出结果如下:
大黄蜂 Bumblebee
7.1