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

时间:2016-06-23 02:01:45

标签: regex go

我有一个字符串:

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

编辑:

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

3 个答案:

答案 0 :(得分:1)

我认为这会奏效:set_index
你的字符串将在捕获组1中

答案 1 :(得分:1)

regexp是一项艰难的要求吗?

从长远来看,使用像strings.Fields之类的东西并按长度过滤生成的数组会更简单(你也可以应用任何其他要求)。

例:
(在操场上试一试!https://play.golang.org/p/Ue2wO5d-Te

package main

import (
    "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)
}

答案 2 :(得分:0)

\ 040与空格字符完全匹配。

所以匹配你需要的东西

[a-z]\040[a-z]\040[a-z]\040[0-9]\040[0-9]\040[0-9]\040[0-9]