code: func getNextWildcard(pattern string) (wildcard, _ string) {
  	pos := wildcardPattern.FindStringIndex(pattern)
  	if pos == nil {
  		return "", pattern
  	}
  	wildcard = pattern[pos[0]:pos[1]]
  
  	// Reach last character or no regexp is given.
  	if len(pattern) == pos[1] {
  		return wildcard, strings.Replace(pattern, wildcard, `(.+)`, 1)
  	} else if pattern[pos[1]] != '(' {
  		switch {
  		case isSpecialRegexp(pattern, ":int", pos):
  			pattern = strings.Replace(pattern, ":int", "([0-9]+)", 1)
  		case isSpecialRegexp(pattern, ":string", pos):
  			pattern = strings.Replace(pattern, ":string", "([\\w]+)", 1)
  		default:
  			return wildcard, strings.Replace(pattern, wildcard, `(.+)`, 1)
  		}
  	}
  
  	// Cut out placeholder directly.
  	return wildcard, pattern[:pos[0]] + pattern[pos[1]:]
  }
docs: // getNextWildcard tries to find next wildcard and update pattern with corresponding regexp.