📜  go 中的字符串匹配正则表达式(1)

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

Go 中的字符串匹配正则表达式

Go 语言内置了对正则表达式的支持,可以通过 regexp 包实现字符串匹配。本文将介绍 Go 中的字符串匹配正则表达式的基本用法。

正则表达式语法

正则表达式是用于匹配字符串模式的工具,是对字符序列进行模式查找和替换的一种通用的计算机文字处理工具。

Go 语言中的正则表达式采用的是 PCRE(Perl Compatible Regular Expression)语法。

regexp 包

Go 语言内置的 regexp 包提供了正则表达式的支持,可以通过其提供的 Regexp 类型来完成对字符串的匹配。

创建正则表达式

可以使用 regexp.Compile 方法来创建正则表达式,该方法将返回一个 Regexp 类型的对象和一个错误值。

package main

import (
    "fmt"
    "regexp"
)

func main() {
    reg, err := regexp.Compile("a.c")
    if err != nil {
        fmt.Println("regex error:", err)
        return
    }
    fmt.Println(reg.MatchString("abc")) // true
    fmt.Println(reg.MatchString("adc")) // false
}

在上述示例中,我们通过 regexp.Compile 方法创建了一个匹配 a.c 的正则表达式,并通过 Regexp.MatchString 方法对字符串 "abc""adc" 进行了匹配。

匹配字符串

可以使用 Regexp.MatchString 方法来对字符串进行匹配,该方法将返回匹配结果和一个错误值。

package main

import (
    "fmt"
    "regexp"
)

func main() {
    reg, err := regexp.Compile("a.c")
    if err != nil {
        fmt.Println("regex error:", err)
        return
    }
    fmt.Println(reg.MatchString("abc")) // true
    fmt.Println(reg.MatchString("adc")) // false
}

在上述示例中,我们通过 Regexp.MatchString 方法对字符串 "abc""adc" 进行了匹配,返回了匹配结果。

查找字符串

可以使用 Regexp.FindString 方法来查找指定的字符串,该方法返回第一个匹配的字符串。

package main

import (
    "fmt"
    "regexp"
)

func main() {
    reg, err := regexp.Compile("a.c")
    if err != nil {
        fmt.Println("regex error:", err)
        return
    }
    str := "abcd"
    matchStr := reg.FindString(str)
    fmt.Println(matchStr) // abc
}

在上述示例中,我们使用 Regexp.FindString 方法查找字符串 "abcd" 中第一个匹配正则表达式 "a.c" 的字符串,返回了 "abc"

查找所有字符串

可以使用 Regexp.FindAllString 方法来查找指定的字符串,并返回所有匹配的字符串。

package main

import (
    "fmt"
    "regexp"
)

func main() {
    reg, err := regexp.Compile("a.c")
    if err != nil {
        fmt.Println("regex error:", err)
        return
    }
    str := "abcd"
    matchStrList := reg.FindAllString(str, -1)
    fmt.Println(matchStrList) // [abc]
}

在上述示例中,我们使用 Regexp.FindAllString 方法查找字符串 "abcd" 中所有匹配正则表达式 "a.c" 的字符串,返回了一个只包含一个元素的字符串切片 ["abc"]

结论

本文介绍了 Go 中的字符串匹配正则表达式的基本用法,包括正则表达式语法、regexp 包、创建正则表达式、匹配字符串、查找字符串和查找所有字符串。希望本文对您有所帮助。