diff --git a/usr/gri/pretty/docprinter.go b/usr/gri/pretty/docprinter.go
index 87b973e275796046e41ac0cf3873504c59783ed9..88651b288fe449f487795b39ef1361ec5222f4bb 100644
--- a/usr/gri/pretty/docprinter.go
+++ b/usr/gri/pretty/docprinter.go
@@ -453,8 +453,26 @@ func (doc *DocReader) Doc() *PackageDoc {
 // ----------------------------------------------------------------------------
 // Filtering by name
 
+// Does s look like a regular expression?
+func isRegexp(s string) bool {
+	metachars := ".(|)*+?^$[]";
+	for i, c := range s {
+		for j, m := range metachars {
+			if c == m {
+				return true
+			}
+		}
+	}
+	return false
+}
+
 func match(s string, a []string) bool {
 	for i, t := range a {
+		if isRegexp(t) {
+			if matched, err := regexp.Match(t, s); matched {
+				return true;
+			}
+		}
 		if s == t {
 			return true;
 		}
@@ -516,6 +534,7 @@ func filterFuncDocs(a []*FuncDoc, names []string) []*FuncDoc {
 // Filter eliminates information from d that is not
 // about one of the given names.
 // TODO: Recognize "Type.Method" as a name.
+// TODO(r): maybe precompile the regexps.
 func (p *PackageDoc) Filter(names []string) {
 	p.Consts = filterValueDocs(p.Consts, names);
 	p.Vars = filterValueDocs(p.Vars, names);