func NewKVKeysQuery(s string) (*KVKeysQuery, error) {
	if s != "" && !KVKeysQueryRe.MatchString(s) {
		return nil, fmt.Errorf("kv.keys: invalid format: %q", s)
	}

	m := regexpMatch(KVKeysQueryRe, s)
	return &KVKeysQuery{
		stopCh: make(chan struct{}, 1),
		dc:     m["dc"],
		prefix: m["prefix"],
	}, nil
}
func NewKVKeysQuery(s string) (*KVKeysQuery, error) {
	if s != "" && !KVKeysQueryRe.MatchString(s) {
		return nil, fmt.Errorf("kv.keys: invalid format: %q", s)
	}

	m := regexpMatch(KVKeysQueryRe, s)
	return &KVKeysQuery{
		stopCh: make(chan struct{}, 1),
		dc:     m["dc"],
		prefix: m["prefix"],
	}, nil
}
// NewKVKeysQuery parses a string into a dependency.