Programming language: Go
License: GNU General Public License v3.0 or later

go-wildcard alternatives and similar packages

Based on the "Specific Formats" category.
Alternatively, view go-wildcard alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of go-wildcard or a related project?

Add another 'Specific Formats' Package



Go Report Card Go Reference Go coverage Apache V2 License

Go-wildcard is forked from Minio project


This part of Minio project is a very cool, fast and light wildcard pattern matching.

Originally the purpose of this fork is to give access to this "lib" under Apache license, without import the entire Minio project ...

Two function are available MatchSimple and Match

  • MatchSimple only covert * usage (he is a bit faster)
  • Match support full wildcard matching, * and ?

I know Regex, but this is a big part, and it is slow (even prepared regex) ...
I know Glob, but most of the time, I only need simple wildcard matching.

This library remains under Apache License Version 2.0, but MinIO project is migrated to GNU Affero General Public License 3.0 or later from https://github.com/minio/minio/commit/069432566fcfac1f1053677cc925ddafd750730a

How to

โš ๏ธ WARNING: Unlike the GNU "libc", this library has no equivalent to "FNM_FILE_NAME". To do this you can use "path/filepath" https://pkg.go.dev/path/filepath#Glob

Using this fork

go get github.com/IGLOU-EU/go-wildcard@latest

Using Official Minio (GNU Affero General Public License 3.0 or later)

From https://github.com/minio/minio/commit/81d5688d5684bd4d93e7bb691af8cf555a20c28c the minio pkg are moved to https://github.com/minio/pkg

go get github.com/minio/pkg/wildcard@latest

Quick Example

This example shows a Go file which pattern matching ...

package main

import (

    wildcard "github.com/IGLOU-EU/go-wildcard"

func main() {
    str := "daaadabadmanda"

    pattern := "da*da*da*"
    result := wildcard.MatchSimple(pattern, str)
    fmt.Println(str, pattern, result)

    pattern = "?a*da*d?*"
    result = wildcard.Match(pattern, str)
    fmt.Println(str, pattern, result)

*Note that all licence references and agreements mentioned in the go-wildcard README section above are relevant to that project's source code only.