code: func split(str string) []string {
  	// check if consecutive single char things make up an initialism
  	once.Do(func() {
  		splitRex1 = regexp.MustCompile(`(\p{Lu})`)
  		splitRex2 = regexp.MustCompile(`(\pL|\pM|\pN|\p{Pc})+`)
  		splitReplacer = strings.NewReplacer(
  			"@", "At ",
  			"&", "And ",
  			"|", "Pipe ",
  			"$", "Dollar ",
  			"!", "Bang ",
  			"-", " ",
  			"_", " ",
  		)
  		ensureSorted()
  	})
  
  	str = trim(str)
  
  	// Convert dash and underscore to spaces
  	str = splitReplacer.Replace(str)
  
  	// Split when uppercase is found (needed for Snake)
  	str = splitRex1.ReplaceAllString(str, " $1")
  
  	for _, k := range initialisms {
  		str = strings.Replace(str, splitRex1.ReplaceAllString(k, " $1"), " "+k, -1)
  	}
  	// Get the final list of words
  	//words = rex2.FindAllString(str, -1)
  	return splitRex2.FindAllString(str, -1)
  }
docs: // Prepares strings by splitting by caps, spaces, dashes, and underscore