为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
幕布斯7119047 2022-01-17 20:11:23
我有一个字符串: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 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

是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)

}


查看完整回答
反对 回复 2022-01-17
?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

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


查看完整回答
反对 回复 2022-01-17
?
森林海

TA贡献2011条经验 获得超2个赞

\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]


查看完整回答
反对 回复 2022-01-17
  • 3 回答
  • 0 关注
  • 214 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信