gpt4 book ai didi

regex - 微调正则表达式

转载 作者:数据小太阳 更新时间:2023-10-29 03:28:16 24 4
gpt4 key购买 nike

我正在使用 go 中的一些正则表达式,这不是一个直接的过程,即需要时间来完成和理解我找到的项目并快速阅读手册;任何关于改进以下内容的意见都将不胜感激,以加快这一进程。

// {aa,bb,cc,dd, etc.}, {a+,b+,c+}
regexp.MustCompile(`\B\{([\w-]+)(.*,)([\w-]+)(?:,[\w-]+=[\w-]+)*\}`)
// above captures {a+, b+, c}, but not {a+,b+,c+}

// {1-9}, {1-9,10,19,20-52}
regexp.MustCompile(`\B\{([\d]?)-([\d]?)(?:,[\d]?=[\d]?)*\}`)
// the first is fine, but no idea on how to do the latter, i.e. multiple ranges that might have free standing addons, tricky, maybe beyond a regexp

// {a-f}, {A-F}, {x-C}
regexp.MustCompile(`\B\{([a-zA-Z]?)-([a-zA-Z]?)(?:,[a-zA-Z]?=[a-zA-Z]?)*\}`)

我不确定我是否需要 (?: 部分,它已找到,我只需要识别上面的序列的单独实例(逗号分隔、数字范围、字符范围),在文本中用 {} 括起来我是解析。

最佳答案

如果将解析分解为多个步骤,问题就更容易解决。您可以从以下内容开始:

http://play.golang.org/p/ugqMmaeKEs

s := "{aa,bb,cc,  dd}, {a+,\tb+,c+}, {1-9}, {1-9,10,19,20-52}, {a-f}, {A-F}, {x-C}, {}"

// finds the groups of characters captured in {}
matchGroups := regexp.MustCompile(`\{(.+?)\}`)
// splits each captured group of characters
splitParts := regexp.MustCompile(`\s*,\s*`)

parts := [][]string{}
for _, match := range matchGroups.FindAllStringSubmatch(s, -1) {
parts = append(parts, splitParts.Split(match[1], -1))
}

现在您已将所有部分分组到 slice 中,并且可以解析各个部分的语法,而无需通过正则表达式匹配所有组合。

关于regex - 微调正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32334904/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com