Cela permet de sauter les 2 premiers caractères et de commencer à faire correspondre les caractères de gauche à droite.
re := regexp.MustCompile("(^.{2})(\\/path\\/subpath((\\/.*)|()))")
fmt.Println(re.MatchString("c:/path/subpath/path/subpath/")) // true
fmt.Println(re.MatchString("c:/patch/subpath/path/subpath/")) // false
Remarquez que le second ne fonctionne pas, même si /path/subpath existe dans la chaîne. C'est parfait.
maintenant, si je ne sais pas combien de caractères il faut sauter et que je veux commencer la recherche au premier '/', j'ai essayé ceci
re2 := regexp.MustCompile("([^\\/])(\\/path\\/subpath((\\/.*)|()))")
fmt.Println(re2.MatchString("cddddd:/path/subpath/path/subpath")) // true
ce qui est parfait. mais si je change le 1er chemin d'accès fmt.Println(re2.MatchString("cddddd:/patch/subpath/path/subpath")) // ceci est vrai aussi
Je ne veux pas que le dernier corresponde au deuxième /chemin/sous-chemin. Je veux pouvoir effectuer une recherche dans le premier groupe, commencer le deuxième groupe à partir de là et effectuer une correspondance de gauche à droite.
Toute aide serait très appréciée.