|
|
|
@ -205,6 +205,29 @@ func (re Reg) FindAllSubmatch(str string) []Match {
|
|
|
|
|
return indices
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// FindAllSubmatch returns a double-slice of strings. Each slice contains the text of a match, including all submatches.
|
|
|
|
|
// A return value of nil indicates no match.
|
|
|
|
|
func (re Reg) FindAllStringSubmatch(str string) [][]string {
|
|
|
|
|
match := re.FindAllSubmatch(str)
|
|
|
|
|
if len(match) == 0 {
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
rtv := make([][]string, len(match))
|
|
|
|
|
for i := range rtv {
|
|
|
|
|
rtv[i] = make([]string, re.numGroups+1)
|
|
|
|
|
}
|
|
|
|
|
rtv = funcMap(match, func(m Match) []string {
|
|
|
|
|
return funcMap(m, func(g Group) string {
|
|
|
|
|
if g.IsValid() {
|
|
|
|
|
return str[g.StartIdx:g.EndIdx]
|
|
|
|
|
} else {
|
|
|
|
|
return ""
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
return rtv
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func addStateToList(str []rune, idx int, list []nfaState, state nfaState, threadGroups []Group, visited []nfaState, preferLongest bool) []nfaState {
|
|
|
|
|
if stateExists(list, state) || stateExists(visited, state) {
|
|
|
|
|
return list
|
|
|
|
|