猿问

使用 Or | 在 Go Regex 中使用组

如果我有 (a)|(b) 也可以用 0 为 b 启动组,那么在 Go Regex 中有没有办法?我该怎么做?

re := regexp.MustCompile(   
    `<(\$)([a-zA-Z0-9]+):([a-zA-Z0-9]+):([a-zA-Z0-9]+)>|{(@)([a-zA-Z0-9 ]+)}`)

并迭代

for _, v := range re.FindAllSubmatchIndex([]byte(str), -1) {
  ...
}

如何“规范化”组(索引)?所以 (@) 也是第 0 组?

我可以使用同名的组名吗?


眼眸繁星
浏览 85回答 1
1回答

精慕HU

Go regex engine 是RE2,不幸的是它不支持您正在寻找的功能,即分支重置组。如果您一定需要,可以使用 Go 的 PCRE 库端口。例如,这是一个package pcre图书馆。添加后,您可以使用(?|<(\$)([a-zA-Z0-9]+):([a-zA-Z0-9]+):([a-zA-Z0-9]+)>|{(@)([a-zA-Z0-9 ]+)}) ^^^                                                  ^                    ^请参阅正则表达式演示。
随时随地看视频慕课网APP

相关分类

Go
我要回答