Say I have the following two types of string inputs:
1) \"feat: this is a feature\"
2) \"feat[JIRA-xxxx]: this is Jira feature
The strings contains three parts, there feat is Type, JIRA-xxx inside [] is optional Jira story id, and rest part after : is subject.
I want to use a single regexp to match the three parts, optional file should get nil if not present. The following is my code:
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)
My regular expression has a problem. Because the Jira ID part is optional, I have to use ()?, but () has the other meaning of returning matched value, so with my code, it returns four matches:
`feat`, `[JIRA-xxx]`, JIRA-xxx`, `this is Jira feature`
How to modify the expression so that I get only the intended 3 matches?