in server/datasource/etcd/kv/kv_dao.go [585:609]
func toRegex(opts datasource.FindOptions) (*regexp.Regexp, error) {
var value string
if opts.Key == "" {
return nil, nil
}
switch {
case strings.HasPrefix(opts.Key, "beginWith("):
value = strings.ReplaceAll(getValue(opts.Key), ".", "\\.") + ".*"
case strings.HasPrefix(opts.Key, "wildcard("):
value = strings.ReplaceAll(getValue(opts.Key), ".", "\\.")
value = strings.ReplaceAll(value, "*", ".*")
default:
value = strings.ReplaceAll(opts.Key, ".", "\\.")
}
value = "^" + value + "$"
if !opts.CaseSensitive {
value = "(?i)" + value
}
regex, err := regexp.Compile(value)
if err != nil {
openlog.Error("invalid wildcard expr: " + value + ", error: " + err.Error())
return nil, err
}
return regex, nil
}