猿问

正则表达式 - 捕获空格分隔的单词

我有一个字符串:

2001 970451 4 l 97 0451 iver b y c 3 0 1 8 4 1 4 hundred 2001 970451 nama  4 l 97 0451 iver hundred blah

我需要一个适当的正则表达式来捕获一系列字符和空格,例如b y c 3 0 1 8 4 1 4

我努力了:

(\b[a-z0-9]{1}\s{1})+ - 我明白了 l

编辑:

为了进一步解释我需要什么,我需要能够捕获类似的文本系列,其中单个字母字符连续/重复地后跟单个空格字符,直到不再正确。


幕布斯7119047
浏览 216回答 3
3回答

慕婉清6462132

是regexp硬性要求吗?从长远来看,对您来说,使用类似strings.Fields的东西并按长度过滤结果数组会简单得多(您也可以应用任何其他要求)。示例:(在操场上试一试!https://play.golang.org/p/Ue2wO5d-Te)package mainimport (    "fmt"    "strings")func CaptureGroups(input string) (output [][]string) {    fields := strings.Fields(input)    var group []string    for _, field := range fields {        if len(field) == 1 {            group = append(group, field)        } else {            if len(group) > 0 {                output = append(output, group)                group = make([]string, 0)            }        }    }    return}func main() {    input := "2001 970451 4 l 97 0451 iver b y c 3 0 1 8 4 1 4 hundred 2001 970451 nama  4 l 97 0451 iver hundred blah"    output := CaptureGroups(input)    fmt.Printf("Groups: %q", output)}

鸿蒙传说

我认为这会起作用: 您的字符串将在捕获组 1 中(( [^ ])+ )

森林海

\040 与空格字符完全匹配。所以要匹配类似 `byc 3 0 1 8 4 1 4 你需要[a-z]\040[a-z]\040[a-z]\040[0-9]\040[0-9]\040[0-9]\040[0-9]
随时随地看视频慕课网APP

相关分类

Go
我要回答