Ich habe das regexp-Paket verwendet, um den folgenden Text zu ersetzen
%Vor%aber ich konnte "Produkte" nicht ersetzen, ohne ein anderes Wort wie "products_list" zu ersetzen, und Golang hat keine Funktion wie re.ReplaceAllStringSubmatch , um mit submatch zu ersetzen (es gibt nur FindAllStringSubmatch). Ich habe re.ReplaceAllString verwendet, um "products" durch zu ersetzen.
%Vor%Es ist nicht das, was ich will und ich brauche unter dem Ergebnis:
%Vor% Sie können Capture-Gruppen mit Alternationen verwenden, die entweder String-Grenzen oder ein Zeichen nicht _
(immer noch mit einer Wortgrenze) entsprechen:
Hier ist die Go-Demo und eine Regex-Demo .
Hinweise zum Muster:
(^|[^_])
- Anfang der Zeichenfolge ( ^
) oder ein anderes Zeichen als _
\bproducts\b
- ein ganzes Wort "Produkte" ([^_]|$)
- entweder ein nicht _
oder das Ende von string. Im Ersetzungsmuster verwenden wir Rückverweise, um die mit den Klammern erfassten Zeichen (Erfassungsgruppen) wiederherzustellen.