Realicé una función de expresión regex basada en el comportamiento de la función de división de expresiones regulares en java, C#, php .... Devuelve solo una matriz de cadenas, sin la información del índice.
func RegSplit(text string, delimeter string) []string {
reg := regexp.MustCompile(delimeter)
indexes := reg.FindAllStringIndex(text, -1)
laststart := 0
result := make([]string, len(indexes) + 1)
for i, element := range indexes {
result[i] = text[laststart:element[0]]
laststart = element[1]
}
result[len(indexes)] = text[laststart:len(text)]
return result
}
ejemplo:
fmt.Println(RegSplit("a1b22c333d", "[0-9]+"))
resultado:
[a b c d]
Intenté esto, pero sobrescribe el carácter que quiero dividir. No quiero perder el personaje, simplemente inserte un espacio. Usé un ciclo for para llegar a mi objetivo. Gracias. PD: su respuesta no incluyó expresiones regex, ¿quizás por eso hay un voto negativo? – Brenden
Nada se "sobrescribe", solo se trata de lo que se devolvió. Si lo desea, siempre puede usar una función de expresión regular diferente para obtener los índices y usarlos. –