Скажем, у меня есть следующие два типа строковых входов:
1) "feat: this is a feature"
2) "feat[JIRA-xxxx]: this is Jira feature
Строка состоит из трех частей, там feat
- это Тип, JIRA-xxx
внутри []
- необязательный идентификатор истории Jira, а остальная часть после :
- тема.
Я хочу использовать одно регулярное выражение для соответствия трем частям, необязательный файл должен получить ноль, если его нет. Вот мой код:
var re *regexp.Regexp
re = regexp.MustCompile("^(\\w*)(\\[(.*)\\])?\\:\\s(.*)$")
input := "feat[JIRA-xxxx]: this is Jira feature"
res := re.FindAllStringSubmatch(input, -1)
fmt.Print("%q", res)
У моего регулярного выражения есть проблема. Поскольку часть идентификатора Jira является необязательной, я должен использовать ()?
, но у ()
есть другое значение возврата совпадающего значения, поэтому в моем коде он возвращает четыре совпадения:
`feat`, `[JIRA-xxx]`, JIRA-xxx`, `this is Jira feature`
Как изменить выражение так, чтобы я получал только предполагаемые 3 совпадения?