在Go语言中,和可以用作通配符来匹配文件名或路径

17 min read

github.com/minio/pkg/wildcard是一个Go语言包,提供了一些用于处理通配符的功能。

在Go语言中,*?可以用作通配符来匹配文件名或路径。github.com/minio/pkg/wildcard包提供了一些函数,用于在编程中使用这些通配符进行模式匹配。

该包提供了以下函数:

  • Match(pattern, name string) (matched bool, err error): 检查给定的名称是否与给定的通配符模式匹配。返回布尔值,表示名称是否匹配模式。
  • MatchAny(patterns []string, name string) (matched bool, err error): 检查给定的名称是否与给定的通配符模式中的任何一个匹配。返回布尔值,表示名称是否与任何一个模式匹配。
package main

import (
	"fmt"
	"github.com/minio/pkg/wildcard"
)

func main() {
	matched, err := wildcard.Match("*.txt", "file.txt")
	if err != nil {
		fmt.Println(err)
		return
	}
	if matched {
		fmt.Println("Matched!")
	} else {
		fmt.Println("Not matched!")
	}

	matched, err = wildcard.MatchAny([]string{"*.txt", "*.md"}, "file.md")
	if err != nil {
		fmt.Println(err)
		return
	}
	if matched {
		fmt.Println("Matched!")
	} else {
		fmt.Println("Not matched!")
	}
}

在上面的示例中,我们首先使用Match函数将file.txt文件与*.txt模式进行匹配。因为文件名符合模式,所以匹配结果为真,输出Matched!

接下来,我们使用MatchAny函数将file.md文件与*.txt*.md两个模式中的任何一个进行匹配。因为文件名符合*.md模式,所以匹配结果为真,输出Matched!