Um eine Menge von Seiten auszuwählen (etwa Seiten, die gesperrt werden sollen, deren Einrechungs-Mails man abonnieren will, oder die man zu einem Blog kombinieren will), verwendet das Wiki eine PageSpec. Dies ist ein Ausdruck, der auf bestimmte Seiten passt.

Die einfachste PageSpec ist eine einfache Liste von Seiten. Zum Beispiel passt dies auf jede der drei aufgezählten Seiten:

foo or bar or baz

Häufiger wird es vorkommen, dass man Seiten erfassen will, deren Name etwas bestimmtes enthält. Man kann dies mit einem Muster tun: "*" steht für einen beliebigen Teil eines Seitennamens und "?" steht für einen beliebigen Buchstaben eines Seitennamens. Also passt dies alle Seiten über Musik, und alle Unterseiten des Sandkastens, aber nicht auf den Sandkasten selbst:

*music* or SandBox/*

Man kann einem Eintrag ein "!" voranstellen, um die betreffenden Seiten auszuschließen. Auf diese Weise können alle Seiten außer Diskussionsseiten und Sandkasten erfasst werden:

* and !SandBox and !*/Discussion

Einige weitergehende Einschränkungen können hinzugefügt werden, indem die folgenden Funktionen verwendet werden:

  • "glob(someglob)" - matches pages and other files that match the given glob. Just writing the glob by itself is actually a shorthand for this function.
  • "page(glob)" - like glob(), but only matches pages, not other files
  • "link(page)" - matches only pages that link to a given page (or glob)
  • "tagged(tag)" - matches pages that are tagged or link to the given tag (or tags matched by a glob)
  • "backlink(page)" - matches only pages that a given page links to
  • "creation_month(month)" - matches only files created on the given month number
  • "creation_day(mday)" - or day of the month
  • "creation_year(year)" - or year
  • "created_after(page)" - matches only files created after the given page was created
  • "created_before(page)" - matches only files created before the given page was created
  • "internal(glob)" - like glob(), but matches even internal-use pages that globs do not usually match.
  • "title(glob)", "author(glob)", "authorurl(glob)", "license(glob)", "copyright(glob)", "guid(glob)"
    • match pages that have the given metadata, matching the specified glob.
  • "user(username)" - tests whether a modification is being made by a user with the specified username. If openid is enabled, an openid can also be put here. Glob patterns can be used in the username. For example, to match all openid users, use user(*://*)
  • "admin()" - tests whether a modification is being made by one of the wiki admins.
  • "ip(address)" - tests whether a modification is being made from the specified IP address.
  • "comment(glob)" - matches comments to a page matching the glob.
  • "comment_pending(glob)" - matches unmoderated, pending comments.
  • "postcomment(glob)" - matches only when comments are being posted to a page matching the specified glob

Zum Beispiel können alle Seiten eines Blogs ausgewählt werden, die einen Link zu einer Seite über Musik enthalten und 2005 geschrieben wurden:

blog/* and link(music) and creation_year(2005)

Beachte die Verwendung von and im obigen Beispiel: Dies bewirkt, dass nur die Seiten auf den gesamten Ausdruck passen, die auf alle drei Teilausdrücke passen. Verwende and um Ausdrücke so zu kombinieren und or wenn eine Seite nur auf einen der Ausdrücke passen soll. Beachte dass es sinnlos ist, index and SandBox zu sagen, da keine Seite auf beide Ausdrücke passen kann.

Es können auch komplexere Ausdrücke erstellt werden, indem Klammern zur Gruppierung verwendet werden. Zum Beispiel passt der folgende Ausdruck auf Blog-Seiten, die mit einem der beiden angegebenen Tags versehen sind:

blog/* and (tagged(foo) or tagged(bar))

Beachte, dass Seitennamen in PageSpecs auf den absoluten Dateinamen der Seiten im Wiki passen müssen: Die PageSpec foo auf der Seite a/b wird weder auf a/foo noch auf a/b/foo passen. Um relative Pfade zum Verzeichnis der Seite, die die PageSpec enthält, zu verwenden, kannst du ./ verwenden. Zum Beispiel passt ./foo auf der Seite a/b auf a/foo.

To indicate the name of the page the PageSpec is used in, you can use a single dot. For example, link(.) matches all the pages linking to the page containing the PageSpec.