在Go中使用正则表达式

简介: 在Go中使用正则表达式

一、演示案例

在这个案例中声明了常量text


然后使用了regexp这个包的regexp.Compile这个方法。


这种方式是不确定用户输入的值是否符合匹配规则。


当然也可以看到结果是返回了我们需要的数据。


image.png


但是在一般情况下,如果确定了用户输入的内容是正确的是完全符合的就可以使用下方案例。


在这个案例中可以看到regexp.MustCompile使用了这个方法,并且返回的值也是一样的。


image.png


这个方法没有返回错误,但是在自己的内部方法进行了异常处理。


根据注释可以得知使用这个方法给的参数表达式是不必须可以解析的,如果不能解析则就会抛出异常。


image.png


二、正则匹配

接下来我们使用正则进行匹配, 也就是在上图方法中进行正则表达式的匹配。


案例跟上图使用的一致都是用来匹配邮箱。


那么接下来先写第一版本。


可以看到返回结果就是我们想要的。


关于正则表达式的写法这部分内容在这里就说明了, 本文主要是针对go如何使用正则表达式。


image.png


此时就会反映出第一个问题,那就是FindString这个方法只能匹配一个值。


image.png


那如何匹配多个值呢!请看下方案例


三、匹配多个值

可以看到返回结果是将所有可以匹配的邮箱都给匹配了出来。


匹配多个值需要使用FindAllString这个方法。


第一个参数为匹配的字符,第二个参数是寻找多少个,-1是全找


image.png


在go中给提供了一种非常好的方式可以直接将邮箱名、邮箱域名、和邮箱后缀给提取出来,那么应该怎么做呢!


四、正则表达式提取内容

在这里就不能继续使用上述案例的方法了,需要使用FindAllStringSubmatch这个方法


image.png


在这个方法中可以得知返回的是一个二维的字符串,从上图的返回结果也可以得知返回的就是一个二维的字符串。


image.png


既然返回的是二维的字符串切片,那么我们就可以进行循环来获取每一个提取出来的内容。


可以看到返回了四个匹配,第一个就是完整的,后边的三个都是我们获取出来的内容。


image.png


五、总结

通过以上四个案例简单的了解一下在Go中如何使用正则表达式,进行了模拟了几个场景,和go中的正则表达式包的使用。


这个案例也算是对go的一个练习,没有多深的内容,主要就是关于正则包的使用,最重要的就是最后一个案例,这种正则表达式提取内容在爬虫的项目中是非常常见的。


相关文章
|
7月前
|
存储 Go 索引
Go 正则表达式
Go 正则表达式
74 0
|
存储 Go 索引
Go 正则表达式
Go 正则表达式
72 0
|
Java 编译器 Go
Go 语言入门很简单:正则表达式(上)
在计算中,我们经常需要将特定模式的字符或字符子集匹配为另一个字符串中的字符串。此技术用于使用特别的语法来搜索给定字符串中的特定字符集。比如邮件、手机号、身份证号等等。 如果搜索到的模式匹配,或者在目标字符串中找到给定的子集,则搜索被称为成功;否则被认为是不成功的。 那么此时该用到正则表达式了。
|
Go 数据安全/隐私保护 Python
Go 编程 | 连载 27 - 正则表达式
Go 编程 | 连载 27 - 正则表达式
|
程序员 Go
Go 语言入门很简单:正则表达式(下)
在计算中,我们经常需要将特定模式的字符或字符子集匹配为另一个字符串中的字符串。此技术用于使用特别的语法来搜索给定字符串中的特定字符集。比如邮件、手机号、身份证号等等。 如果搜索到的模式匹配,或者在目标字符串中找到给定的子集,则搜索被称为成功;否则被认为是不成功的。 那么此时该用到正则表达式了。
|
1天前
|
存储 Go 索引
go语言使用for循环遍历
go语言使用for循环遍历
15 7
|
1天前
|
开发框架 Go 计算机视觉
纯Go语言开发人脸检测、瞳孔/眼睛定位与面部特征检测插件-助力GoFly快速开发框架
开发纯go插件的原因是因为目前 Go 生态系统中几乎所有现有的人脸检测解决方案都是纯粹绑定到一些 C/C++ 库,如 OpenCV 或 dlib,但通过 cgo 调用 C 程序会引入巨大的延迟,并在性能方面产生显著的权衡。此外,在许多情况下,在各种平台上安装 OpenCV 是很麻烦的。使用纯Go开发的插件不仅在开发时方便,在项目部署和项目维护也能省很多时间精力。
|
4天前
|
存储 Go
go语言 遍历映射(map)
go语言 遍历映射(map)
18 2
|
5天前
|
Go 调度 开发者
Go语言中的并发编程:深入理解goroutines和channels####
本文旨在探讨Go语言中并发编程的核心概念——goroutines和channels。通过分析它们的工作原理、使用场景以及最佳实践,帮助开发者更好地理解和运用这两种强大的工具来构建高效、可扩展的应用程序。文章还将涵盖一些常见的陷阱和解决方案,以确保在实际应用中能够避免潜在的问题。 ####
|
5天前
|
测试技术 Go 索引
go语言使用 range 关键字遍历
go语言使用 range 关键字遍历
14 3