Jul*_*ess 19 regex go string-split
我是Go的新手,到目前为止一直很享受.我正在尝试找到一种使用正则表达式而不是字符串来拆分字符串的好方法.谢谢
Yur*_*rii 15
我根据java,c#,php中正则表达式拆分函数的行为制作了一个正则表达式 - 拆分函数.它只返回一个字符串数组,没有索引信息.
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
}
Run Code Online (Sandbox Code Playgroud)
例:
fmt.Println(RegSplit("a1b22c333d", "[0-9]+"))
Run Code Online (Sandbox Code Playgroud)
结果:
[a b c d]
Run Code Online (Sandbox Code Playgroud)
您可以使用regexp.Split正则表达式模式作为分隔符将字符串拆分为字符串切片。
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("[0-9]+")
txt := "Have9834a908123great10891819081day!"
split := re.Split(txt, -1)
set := []string{}
for i := range split {
set = append(set, split[i])
}
fmt.Println(set) // ["Have", "a", "great", "day!"]
}
Run Code Online (Sandbox Code Playgroud)