如果我有(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组?
我可以使用具有相同名称的组名吗?
答案 0 :(得分:2)
Go regex引擎为RE2,很遗憾,它不支持您正在寻找的功能,即branch reset group。
如果您一定需要Go的话,可以使用PCRE库端口。例如,这是package pcre
library。添加后,您可以使用
(?|<(\$)([a-zA-Z0-9]+):([a-zA-Z0-9]+):([a-zA-Z0-9]+)>|{(@)([a-zA-Z0-9 ]+)})
^^^ ^ ^
请参见regex demo。