Wrote FindAllStringSubmatch()
This commit is contained in:
@@ -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
|
||||
|
Reference in New Issue
Block a user