When I first looked at the regexp package for Go, I was a bit confused. In particular the part of the documentation that read: There are 16 methods of Regexp that match a regular expression and identify the matched text. Their names are matched by this regular expression: Find(All)?(String)?(Submatch)?(Index)? was a bit bewildering. Why are there 16 methods for performing regular expression matchi