J'essaie d'extraire toutes les données à l'intérieur de ${}
.
Par exemple, les données extraites de cette chaîne doivent être abc
.
git commit -m '${abc}'
Voici le code actuel:
re := regexp.MustCompile("${*}")
match := re.FindStringSubmatch(command)
Mais ça ne marche pas, aucune idée?
Vous devez échapper à $
, {
et }
dans l'expression régulière.
re := regexp.MustCompile("\\$\\{(.*?)\\}")
match := re.FindStringSubmatch("git commit -m '${abc}'")
fmt.Println(match[1])
En regex,
$ <-- End of string
{} <-- Contains the range. e.g. a{1,2}
Vous pouvez aussi utiliser
re := regexp.MustCompile(`\$\{([^}]*)\}`)
Essayez re: = regexp.MustCompile(\$\{(.*)\})
* Est un quantificateur, vous avez besoin de quelque chose à quantifier. .
ferait comme il correspond à tout.
Parce que $
, {
et }
ont tous une signification spéciale dans une expression rationnelle et doivent être inversés pour correspondre à ces caractères littéraux, car *
ne fonctionne pas de cette façon et parce que vous n'avez pas réellement inclus de groupe de capture pour les données que vous souhaitez. Capturer. Essayer:
re := regexp.MustCompile(`\$\{.+?)\}`)