Ce face filepath.Match
filepath.Match compară textul name cu modelul. Reguli: * = orice șir de caractere fără separator, ? = exact un caracter (nu separator), [abc] sau [a-z] = un caracter din listă, [^a-z] = un caracter care nu e în listă, \\ scapă caracterul următor (doar pe Unix).
Modelul trebuie să se potrivească cu tot numele, nu doar cu o parte. Funcția nu caută fișiere; pentru căutare pe disc folosește filepath.Glob.
Parametri
| Parametru | Descriere |
|---|---|
pattern |
Modelul. |
name |
Textul verificat. |
Ce returnează
true dacă se potrivește, plus ErrBadPattern pentru un model greșit.
Exemple
Exemplul 1: Reguli de potrivire
package main
import (
"fmt"
"path/filepath"
)
func main() {
teste := [][2]string{
{"*.csv", "vanzari.csv"},
{"*.csv", "date/vanzari.csv"},
{"raport-202?.pdf", "raport-2025.pdf"},
{"raport-202?.pdf", "raport-20255.pdf"},
{"[A-M]*", "Ana"},
{"[A-M]*", "Radu"},
{"[^0-9]*", "a1"},
}
for _, t := range teste {
ok, _ := filepath.Match(t[0], t[1])
fmt.Printf("%-16s %-18s %v\n", t[0], t[1], ok)
}
}
Rezultat
*.csv vanzari.csv true
*.csv date/vanzari.csv false
raport-202?.pdf raport-2025.pdf true
raport-202?.pdf raport-20255.pdf false
[A-M]* Ana true
[A-M]* Radu false
[^0-9]* a1 true
Exemplul 2: Filtrarea fișierelor de ignorat
package main
import (
"fmt"
"path/filepath"
)
func ignorat(nume string, modele []string) bool {
for _, m := range modele {
if ok, _ := filepath.Match(m, nume); ok {
return true
}
}
return false
}
func main() {
modele := []string{"*.tmp", "*.log", ".DS_Store"}
for _, f := range []string{"main.go", "debug.log", ".DS_Store", "date.tmp", "README.md"} {
fmt.Printf("%-10s ignorat: %v\n", f, ignorat(f, modele))
}
}
Rezultat
main.go ignorat: false
debug.log ignorat: true
.DS_Store ignorat: true
date.tmp ignorat: true
README.md ignorat: false
Greșeli frecvente
- Te aștepți ca
*.csvsă se potrivească și cudate/vanzari.csv.*nu trece de separator. - Ignori eroarea și un model greșit (
[neînchis) dă mereufalsefără să afli.
Comenzi înrudite
filepath.Glob: Returnează toate fișierele de pe disc ale căror nume se potrivesc unui model cu *, ? și [ ].filepath.Ext: Returnează extensia fișierului: textul de la ultimul punct din ultimul element, inclusiv punctul.filepath.Base: Returnează ultimul element al unei căi: numele fișierului (sau al ultimului director).