Я работаю с некоторыми регулярными выражениями в go, а это не прямой процесс, т. Е. Требуется время, чтобы проработать и понять из элементов, которые я нашел, и быстро прочитал руководство; любой вклад в уточнение следующего будет оценен для ускорения процесса.Тонкая настройка 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]?)*\}`)
Я не уверен, что мне нужно (?: Часть, она что-то найти, мне просто нужно признать отдельные экземпляры последовательностей выше (разделенных запятыми, диапазон номеров, диапазон символов) в скобки {} в текст Я разбор
Не знаком с 'go', но если вы просто хотите все между' {} 'как насчет просто' \ {. +? \} '? – chris85
Мне нужно идентифицировать 3 типа последовательностей выше; отредактировал эту часть выше. – blueblank
Часто бывает проще написать небольшой синтаксический анализатор для сложного синтаксиса, вместо того, чтобы пытаться создать одно регулярное выражение. В качестве альтернативы вы также можете разбить его на ряд регулярных выражений. – JimB