本章我们主要来学习一下正则表达式的用法:
下面通过一个简单的例子来进行说明一下
package main
import (
"fmt"
"regexp"
)
const text = `My email is ccmouse@gmail.com@abc.com
email1 is abc@def.org
email2 is kkk@qq.com
email is ddd@abc.com.cn
`
func main() {
re := regexp.MustCompile(
`([a-zA-Z0-9]+)@([a-zA-Z0-9.]+)\.([a-zA-Z0-9]+)`) //*表示0个或者多个,+代表一个或者多个
match := re.FindAllString(text,-1)
fmt.Println(match)
}
可以看到输出的结果如图所示:
我们在一段字符串当中提取出了邮箱
加入我们现在需要分别提取ccmouse,@后面的字符,和.后面的字符,我们应该怎么做呢?
我们可以把我们需要提取的部分用括号括起来,然后通过FindAllStringSubmatch来实现,修改后的代码如下:
package main
import (
"fmt"
"regexp"
)
const text = `My email is ccmouse@gmail.com@abc.com
email1 is abc@def.org
email2 is kkk@qq.com
email is ddd@abc.com.cn
`
func main() {
re := regexp.MustCompile(
`([a-zA-Z0-9]+)@([a-zA-Z0-9]+)(\.[a-zA-Z0-9.]+)`) //*表示0个或者多个,+代表一个或者多个
match := re.FindAllStringSubmatch(text,-1)
for _, m := range match {
fmt.Println(m)
}
}
可以看到输出结果如下:
可以看到我们所需要的数据已经提取出来了
通过本章的学习,我们主要学习了正则表达式的相关用法