package regx func isCharMatch(text, pattern string) bool { return pattern[0] == '.' || pattern[0] == text[0] } func matchStar(text, pattern string) bool { for { switch { case isMatch(text, pattern[2:]): return true case text == "" || !isCharMatch(text, pattern): return false default: text = text[1:] } } } func isMatch(text, pattern string) bool { switch { case pattern == "": return text == "" case len(pattern) >= 2 && pattern[1] == '*': return matchStar(text, pattern) case text != "" && isCharMatch(text, pattern): return isMatch(text[1:], pattern[1:]) } return false } func IsMatch(text, pattern string) bool { return isMatch(text, pattern) }