在Or Regex中使用带有| |的组

时间:2018-12-03 17:57:49

标签: regex go

如果我有(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组?

我可以使用具有相同名称的组名吗?

1 个答案:

答案 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