📌  相关文章
📜  golang 正则表达式示例 - Go 编程语言 - Go 编程语言(1)

📅  最后修改于: 2023-12-03 15:15:23.646000             🧑  作者: Mango

Golang 正则表达式示例

正则表达式是一种用来匹配文本字符串的模式。在 golang 中,使用 regexp 包来实现正则表达式的功能。本文将介绍 golang 中正则表达式的基本使用方法和示例。

1. 正则表达式的基本语法

golang 中的正则表达式使用的是 PCRE(Perl Compatible Regular Expressions)语法。在使用前,需要先对正则表达式进行编译,然后再进行匹配操作。

正则表达式中的一些基本元字符和符号包括:

  • . 用于匹配任意字符。
  • * 用于匹配前面的字符 0 次或多次。
  • + 用于匹配前面的字符 1 次或多次。
  • ? 用于匹配前面的字符 0 次或 1 次。
  • | 用于匹配多种可能性中的任意一种。
  • [] 用于匹配中括号内的任意一个字符。
  • () 用于分组匹配。

除上述基本元字符之外,还有一些特殊的元字符和符号需要注意,例如 {} 用于限定匹配次数,\ 用于转义字符,^ 用于匹配行首,$ 用于匹配行尾等。

2. 编译正则表达式

在 golang 中,要使用正则表达式,首先需要使用 regexp.MustCompile 函数将正则表达式进行编译。该函数的返回值是一个 *regexp.Regexp 类型的指针。

import "regexp"

func main() {
    re := regexp.MustCompile("pattern")
}
3. 匹配正则表达式

编译完正则表达式后,就可以使用 MatchString 函数进行匹配操作。该函数接受一个字符串作为参数,并返回一个布尔值,表示是否匹配成功。

import "regexp"

func main() {
    re := regexp.MustCompile("pattern")
    matched := re.MatchString("text")
}
4. 示例

下面是几个利用正则表达式进行匹配的示例:

匹配邮件地址
import "regexp"

func main() {
    re := regexp.MustCompile(`^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$`)
    matched := re.MatchString("example@example.com")
}
匹配 IP 地址
import "regexp"

func main() {
    re := regexp.MustCompile(`^([01]?\d{1,2}|2[0-4]\d|25[0-5])\.([01]?\d{1,2}|2[0-4]\d|25[0-5])\.([01]?\d{1,2}|2[0-4]\d|25[0-5])\.([01]?\d{1,2}|2[0-4]\d|25[0-5])$`)
    matched := re.MatchString("127.0.0.1")
}
匹配 URL
import "regexp"

func main() {
    re := regexp.MustCompile(`^(https?|ftp)://[^\s/$.?#].[^\s]*$`)
    matched := re.MatchString("https://www.example.com/path")
}
匹配日期
import "regexp"

func main() {
    re := regexp.MustCompile(`^(0?[1-9]|1[0-2])/(0?[1-9]|[12]\d|3[01])/\d{4}$`)
    matched := re.MatchString("12/31/2021")
}
5. 总结

正则表达式基础语法是编程中非常实用的工具。golang 中的 regexp 包提供了基本的正则表达式匹配操作,通过编写不同的正则表达式,我们可以实现对不同格式的数据进行提取和分析。