首页 > 解决方案 > 沿正则表达式拆分字符串,但保持匹配

问题描述

我想按正则表达式拆分字符串,但保留匹配项。

我曾尝试在正则表达式上拆分字符串,但它会丢弃匹配项。我也尝试过使用这个,但我不太擅长将代码从一种语言翻译到另一种语言,更不用说 C#了。

re := regexp.MustCompile(`\d`)
array := re.Split("ab1cd2ef3", -1)

我需要数组的值为[“ab”,“1”,“cd”,“2”,“ef”,“3”],但数组的值为[“ab”,“cd”,“ ef"]。没有错误。

标签: stringgosplit

解决方案


您指出的链接中的那种正则表达式支持在 Go regex 包中不可用。您可以阅读相关讨论

您想要实现的目标(根据给出的示例)可以使用正则表达式来匹配数字或非数字。

package main

import (
    "fmt"
    "regexp"
)

func main() {
    str := "ab1cd2ef3"
    r := regexp.MustCompile(`(\d|[^\d]+)`)
    fmt.Println(r.FindAllStringSubmatch(str, -1))
}

游乐场: https: //play.golang.org/p/L-ElvkDky53

输出:

[[ab ab] [1 1] [cd cd] [2 2] [ef ef] [3 3]]

推荐阅读