likexian / whois-parser

Whois parser for domain whois information parsing in Go(Golang).
Apache License 2.0
284 stars 86 forks source link

Consider not recompiling regex expressions every time #57

Closed linkdata closed 1 year ago

linkdata commented 1 year ago

E.g. at parser.go:245:

func searchDomain(text string) (name, extension string) {
  r := regexp.MustCompile(`(?i)\[?domain\:?(\s*\_?name)?\]?[\s\.]*\:?\s*([^\s\,\;\(\)]+)\.([^\s\,\;\(\)\.]{2,})`)
  m := r.FindStringSubmatch(text)
  // ....
}

Instead place them in a private global variable:

var searchDomainRx = regexp.MustCompile(`(?i)\[?domain\:?(\s*\_?name)?\]?[\s\.]*\:?\s*([^\s\,\;\(\)]+)\.([^\s\,\;\(\)\.]{2,})`)
func searchDomain(text string) (name, extension string) {
  m := searchDomainRx.FindStringSubmatch(text)
  // ....
}
likexian commented 1 year ago

Hello @linkdata Thanks for your feedback and PRs #58.