Использование групп в Go Regex с Or | - PullRequest
0 голосов
/ 03 декабря 2018

Есть ли способ в Go Regex, если у меня есть (a) | (b), чтобы начать группы для b также с 0?как мне это сделать?

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 голосов
/ 04 декабря 2018

Go regex engine - RE2 , и, к сожалению, он не поддерживает функцию, которую вы ищете, а именно группа сброса ветвей .

Есть порты библиотеки PCRE для Go, если вам это нужно во что бы то ни стало.Вот, например, package pcre библиотека .После добавления вы можете использовать

(?|<(\$)([a-zA-Z0-9]+):([a-zA-Z0-9]+):([a-zA-Z0-9]+)>|{(@)([a-zA-Z0-9 ]+)})
^^^                                                  ^                    ^

См. Демонстрационную версию regex .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...