Golang Regex。匹配原始或字面字符串

721 阅读2分钟

概述

在我们的例子中,我们将使用golang中的regexp包,它提供了正则表达式搜索功能golang.org/pkg/regexp/

在研究regex本身之前,让我们看看Go提供的一些基本函数或方法来进行regex匹配。

MatchCompile函数

golang.org/pkg/regexp/…

下面是这个函数的签名

func MustCompile(str string) *Regexp

我们首先使用MustCompile函数编译给定的regex字符串。如果给定的regex是无效的,这个函数就会慌乱。当它能够成功编译给定的regex后,它返回regexp结构的实例。

sampleRegexp := regexp.MustCompile("some_regular_expression"")

匹配方法

golang.org/pkg/regexp/…

下面是该方法的签名

func (re *Regexp) Match(b []byte) bool

我们可以在regexp实例上调用Match方法来匹配给定的模式和regex。如果regex与输入字符串匹配,则返回true,否则返回false。我们需要向该方法传递输入字符串的字节数。

match := sampleRegexp.Match([]byte("some_string"))

让我们来看看一个简单的程序,它是一个有字面或原始字符串的基本的regex。

package main

import (
	"fmt"
	"regexp"
)

func main() {
	sampleRegex := regexp.MustCompile("abc")

	match := sampleRegex.Match([]byte("abc"))
	fmt.Printf("For abc: %t\n", match)

	match = sampleRegex.Match([]byte("1abc2"))
	fmt.Printf("For 1abc2: %t\n", match)

	match = sampleRegex.Match([]byte("xyz"))
	fmt.Printf("For xyz: %t\n", match)
}

输出

For abc: true
For 1abc2: true
For xyz: false

在上面的程序中,我们有一个简单的字面字符串正则表达式

我们首先调用MustCompile来检查给定的正则表达式是否有效。然后,我们将其与下面的样本字符串或文本进行匹配

  • 字符串 "abc"--它 给出了一个匹配并打印为true

  • 字符串 "1abc2" - 它提供了一个匹配并打印为真。因为它包含**"abc "这个**子串,所以匹配。

  • 字符串 "xyz" - 它没有匹配并打印出false。

我们可以注意到,在上面的程序中,如果给定的字符串或文本包含作为子串的regex,那么它也会给出一个匹配。如果我们想进行完整的字符串匹配,那么我们需要在重组词的开头和结尾使用锚定字符。 Caret锚定字符将被用于开头,Dollar锚定字符将被用于结尾。

请参考这篇文章,了解关于全字符串匹配的细节

golangbyexample.com/golang-rege…

另外,请查看我们的Golang高级教程系列------。Golang高级教程

The postGolang Regex:匹配原始或字面字符串出现在Welcome To Golang By Example 上。