func NewCatalogServiceQuery(s string) (*CatalogServiceQuery, error) {
	if !CatalogServiceQueryRe.MatchString(s) {
		return nil, fmt.Errorf("catalog.service: invalid format: %q", s)
	}

	m := regexpMatch(CatalogServiceQueryRe, s)
	return &CatalogServiceQuery{
		stopCh: make(chan struct{}, 1),
		dc:     m["dc"],
		name:   m["name"],
		near:   m["near"],
		tag:    m["tag"],
	}, nil
}
func NewCatalogServiceQuery(s string) (*CatalogServiceQuery, error) {
	if !CatalogServiceQueryRe.MatchString(s) {
		return nil, fmt.Errorf("catalog.service: invalid format: %q", s)
	}

	m := regexpMatch(CatalogServiceQueryRe, s)
	return &CatalogServiceQuery{
		stopCh: make(chan struct{}, 1),
		dc:     m["dc"],
		name:   m["name"],
		near:   m["near"],
		tag:    m["tag"],
	}, nil
}
// NewCatalogServiceQuery parses a string into a CatalogServiceQuery.