You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

36 lines
689 B

2 years ago
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)
}