Tabellen filtern

Syntax für Suchfelder in Tabellenspalten

Autor: Immo Schulz-Gerlach
Version: 1.1 – 12.06.2026
[PDF-Version] [ePub-Version]

Einleitung: Suchfelder zum Filtern von Tabellen nutzen

Worum geht's?

Im Online-Übungs-/Prüfungssystem finden Sie in diversen Tabellenansichten im Betreuer- oder Korrektorenzugang Suchfelder zum Filtern von Tabellen anhand von Spalteninhalten. Das kann z.B. wie folgt aussehen:

Tabellenkopf mit Suchzeile
Tabellenkopf mit Suchzeile

Hier können Sie Text bzw. Zahlen eingeben, um die Tabelle zu filtern, also alle Tabellenzeilen auszublenden, in denen der Suchbegriff nicht (in dieser Spalte) vorkommt. Aber diese Felder können noch mehr als nur reinen Suchtext entgegen zu nehmen und auf ein „Enthaltensein“ als Teilwort zu prüfen. Mit verschiedenen Suchoperatoren können Sie komplexere Suchen / Filteroperationen ausführen. Eine Auswahl praktischer Operatoren soll hier zusammengestellt werden.

Hinweis: Zwei unterschiedliche Implementierungen

Es kann leichte Unterschiede im Such-/Filterverhalten je nach Tabellentyp geben:

Clientseitige Suche
Bei vollständig in den Browser geladenen Tabellen (die den häufigsten Fall darstellen) erfolgt die Suche clientseitig per JavaScript (d.h. direkt lokal im Web-Browser) .
Serverseitige Suche
Es gibt aber auch Tabellen, die so umfangreich sind, dass zur Performance-Optimierung standardmäßig nur ein Tabellenausschnitt geladen und angezeigt wird und beim Blättern zwischen den „Seiten“/Ausschnitten der Tabelle diese immer einzeln vom Server nachgeladen werden. (Dazu kann z.B. die Liste aller Studierendenaccounts eines Veranstalters gehören.)
Derartige Tabellen können Sie übrigens daran erkennen, dass darunter ein Link »Tabelle vollständig in Browser laden…« angeboten wird.
Da der Browser nur einen Ausschnitt der Daten überhaupt kennt, kann er sie natürlich nicht lokal per JavaScript filtern. Daher muss in diesem Fällen die Suche an den Server (das Online-Übungssystem) delegiert und das Suchergebnis neu in den Browser geladen werden.

Normalerweise braucht Sie dieser Unterschied nicht zu kümmern, aber da die Suchroutinen (serverseitig vs. clientseitig) nicht dieselben sind, kann es im Einzelfall Unterschiede im Verhalten oder in den unterstützten Operatoren geben. So unterstützt die JavaScript-Implementierung noch mehr Operatoren/Schreibweisen als die serverseitige Suche. Die im folgenden Teil vorgestellten Operatoren/Schreibweisen sollten in beiden Varianten weitgehend gleich funktionieren, die uns bekannten Unterschiede im Detail1 werden unten jeweils dokumentiert.

Syntax für Sucheingaben

Ausgewählte Suchoperatoren

Was ohne Handbuch bereits intuitiv klar werden bzw. leicht herauszufinden sein sollte, ist, dass durch einfaches Eintippen eines Suchbegriffs in ein solches Suchfeld die Tabelle sofort „live“ gefiltert wird und nur noch Tabellenzeilen anzeigt, die in dieser Spalte den Suchbegriff enthalten.

Die Suchfunktion ist aber noch deutlich flexibler, als nur nach einem einzigen festen Suchbegriff suchen zu können, z.B. lassen sich Suchbegriffe negieren (also nach allen Zeilen suchen, den die Begriff nicht enthalten), mehrere Suchbegriffe kombinieren oder Suchmuster formulieren. Um diese Möglichkeiten zu nutzen, ist eine Kenntnis der entsprechenden Syntax nötig. In diesem Teil sollen ausgewählte Suchoperatoren vorgestellt werden.

Logische Operatoren

| oder OR
Oder-Operator
Trennen Sie mehrere Suchbegriffe durch einen solchen Oder-Operator, um alle Zeilen zu suchen, in denen mindestens einer der Begriffe vorkommt.
Beispiele: eier|eyer findet Tabellenzeilen, die in dieser Spalte die Teilworte »eier« oder »eyer« enthalten, also z.B. Namen wie »Meier«, »Lohmeier«, »Meyer«, »Meyering« etc..
<10 | >20 findet in einer Ganzzahlen-Spalte Zeilen mit Werten kleiner als Zehn oder größer als 20.
&& oder AND
Und-Operator
Zählen Sie Suchbegriffe durch Und-Operatoren getrennt auf, werden nur Zeilen gesucht, in denen beide Begriffe vorkommen.
Beispiel: Rei && mund oder rei and mund findet Texte, die (unabhängig von der Groß-/Kleinschreibung) »Rei« und »mund« enthalten, aber nicht notwendig zusammenhängend, also nicht nur »Reimund«, sondern auch z.B. »Reiner aus Dortmund«. (Auch die Reihenfolge ist beliebig.)
!
Nicht-Operator
Legt fest, dass der nachfolgende Suchbegriff nicht vorkommen darf.
Beispiele: !Hans findet nur Tabellenzeilen, in denen das Teilwort »Hans« nicht vorkommt.
Rei && !mund (oder auch !mund && Rei) findet Tabellenzeilen, in denen zwar das Teilwort »Rei«, aber nicht zusätzlich »mund« vorkommt, d.h. Namen wie »Reiner« oder »Reiter« werden gefunden, »Reimund« dagegen nicht. Oder wenn die Spalte Paare aus Vor- und Nachnamen enthält, würde z.B. ein Eintrag wie »Tobias Reiter« gefunden (da Rei als Teilwort vorkommt), »Reiner Calmund« dagegen ausgefiltert, weil zwar Rei vorkommt, aber auch mund.

Die logischen Operatoren sind hier nach Priorität aufsteigend sortiert, d.h. wenn Sie, wie z.B. im letzten Beispiel, die Operatoren ! und && kombinieren, bindet das Nicht stärker als das Und. (Vergleichbar mit »Punktrechnung vor Strichrechnung«, nur würde man hier eben sagen: »Nicht vor Und vor Oder«.)

Suchmuster und Vergleichsoperatoren

Einfache Texteingabe
Wenn Sie einfach nur Text ohne weitere Operatoren eintippen, wird wie gesagt nach Tabellenzellen gesucht, die mindestens diesen Text enthalten, d.h. es werden auch Teilübereinstimmungen gefunden, genauer: Zellen, die den Suchbegriff als Teilstring enthalten. Die Groß-/Kleinschreibung wird dabei ignoriert.
Neben dieser Teilstring-Prüfung gibt es auch noch komplexere Möglichkeiten, Teilübereinstimmungen mit Suchmustern zu finden:
Wildcards * und ?
ermöglichen einfache Suchmuster, wie sie auch z.B. von Betriebssystemen für Dateiselektion genutzt werden: Fügen Sie dazu ein * als Platzhalter für beliebig viele Zeichen oder ein ? als Wildcard für genau ein beliebiges Zeichen in den Suchbegriff ein.
Beispiel: ?atha* passt auf Namen wie »Nathalie« oder »Katharina«. Hinweise:
  • Auch hierbei wird die Groß-/Kleinschreibung ignoriert.
  • Wildcards funktionieren zwar in der Teilübereinstimmungssuche, aber nicht im Kombination mit Anführungszeichen (") für „wörtliche Vollübereinstimmungssuche“, siehe unten!
/…/ für Reguläre Ausdrücke
Komplexere Suchmuster können als sog. Reguläre Ausdrücke formuliert werden. Eine Beschreibung von regulären Ausdrücken wäre hier zu komplex (eine m.E. sehr gute Einführung und Referenz bietet Regular-Expressions.info), aber wer sich mit dieser Sprache auskennt, kann sie für Suchmuster wie folgt verwenden:
Schreiben Sie im Suchfeld den regulären Ausdruck einfach zwischen zwei Querstriche (/).
Reguläre Ausdrücke sind nicht nur praktisch für komplexere Suchmuster, die sich mit einfachen Wildcards nicht ausdrücken lassen, sondern bieten auch einfache Möglichkeiten, z.B. Textmatches am Zellenbeginn (/^text/) zu suchen oder gezielt unter Beachtung der Groß-/Kleinschreibung zu suchen (beides wird i.F. genauer ausgeführt).
  • Suchflags können hinter dem schließenden Slash angegeben werden, z.B. i für „Ignore Case“, vgl. folgenden Punkt:
  • Die Groß-/Kleinschreibung wird bei regulären Ausdrücken standardmäßig beachtet, kann aber durch Anhängen des Ignore-Case-Flags abgeschaltet werden (/…/i). D.h. bei Verwendung eines regulären Ausdrucks können Sie – anders als bei den obigen Textmuster-Suchen – selbst steuern, ob Sie die Groß-/Kleinschreibung beachten oder ignorieren lassen möchten.
    So findet /[nk]atha/i z.B. auch »Katharina« oder »nathAliA« etc.
  • Beachten Sie, dass diese Suche wieder nach Teilübereinstimmungen sucht, also nach Tabellenzeilen, die in der durchsuchten Spalte einen auf das Muster passenden String zumindest enthalten, das Muster muss aber nicht auf den gesamten Zelleninhalt passen (also kein vollständiger Match). Z.B. /[NK]atha/ sucht nach allen Vorkommen von z.B. »Katha« oder »Natha« als Teilübereinstimmung, findet also z.B. »Katharina«, »Nathalie« oder »Anna-Katharina« etc.
  • Um eine Vollübereinstimmung mit dem Suchmuster zu verlangen, können Sie im regulären Ausdruck sog. Anchors verwenden: Ein ^ am Beginn des regulären Ausdrucks bedeutet z.B., dass das nachfolgende Muster den Beginn des Suchtreffers darstellen muss (kein Text vorangehen darf), ein $ am Ende markiert entsprechend, dass ein Suchtreffer mit diesem Muster enden muss. Beides zusammen (/^suchbegriff$/) sucht demnach nur nach Zellen, die genau einen Pattern-Match enthalten, dem kein Text vorangehen oder folgen darf.
    Beispiel: /^[NK]atha\w+$/ sucht alle Tabellenzeilen, die in der durchsuchten Spalte einen Text enthalten, der mit »Natha« oder »Katha« beginnt, worauf weitere Wortzeichen (Buchstaben, Bindestrich etc., aber kein Leerzeichen und somit kein weiterer Name mehr) folgen dürfen. So werden z.B. »Katharina« und »Nathalie« gefunden, »Anna-Katharina« oder »Nathalie Sofie« hingegen werden ausgefiltert.
  • Mit nur einem dieser beiden Anchors können Sie auch z.B. nach Teilübereinstimmungen am Beginn oder Ende des Inhalts der Tabellenzelle suchen.
    Beispiel: /^Peter/ sucht nach allen Tabellenzeilen, an denen der Wert in dieser Spalte mit dem Text »Peter« beginnt (z.B. »Peter Pan«, nicht aber »Arne Peters«), oder /th$/ sucht nach Zellen, die auf »th« enden.
  • Es gibt eine ganze Reihe unterschiedlicher „Flavours“ / Dialekten der Sprache für Reguläre Ausdrücke, wie auch in Regular-Expressions.info dokumentiert und gegenübergestellt. Die grundlegenden, wichtigsten Syntaxelemente sollten weitgehend gleich sein, aber speziellere Operatoren können von manchen RegEx-Engines unterstützt werden, von anderen nicht.
    Aus diesem Grund kann es hier beim Support regulärer Ausdrücke auch Unterschiede je nach Art der Tabelle (wie oben im Hinweis zu zwei unterschiedlichen Implementierungen beschrieben) geben:
    • Die serverseitige Suche (in großen, nur seitenweise abgerufenen Tabellen) verwendet die Java-Implementierung für reguläre Ausdrücke,
    • die clientseitige Suche dagegen verwendet die JavaScript-Implementierung des Browsers.
    • Außerdem gilt für die serverseitige Suche derzeit, dass der gesamte Suchfeld-Inhalt ein regulärer Ausdruck in zwei Slashes sein muss, dass also nicht mehrere reguläre Ausdrücke mit z.B. logischen Operatoren kombiniert werden können.
= oder "…" für Vollübereinstimmungs-Suche
Wenn Sie einem Suchbegriff ein Gleichheitszeichen voranstellen (oder hinten anstellen) oder diesen Suchbegriff in Anführungszeichen einschließen, wird eine Vollübereinstimmung verlangt. Z.B. =Anton oder Anton= oder "Anton" sucht nur nach Zellen, in denen genau/ausschließlich der Text »Anton« steht, Zellen mit z.B. »Antonia« werden dann ausgefiltert.
  • Auch dies kann wieder mit einem Ausrufezeichen negiert werden. So sucht !=Anton oder !"Anton" wieder nach allen Zellen, die nicht genau das Wort »Anton« enthalten.
  • Hinweis: Dies ist nicht mit Wildcards kombinierbar, genauer:
    • Text in Anführungszeichen wird immer wörtlich verglichen, also werden auch Zeichen wie * und ? darin als zu suchender Text und nicht als Wildcard interpretiert.
      In einem Suchbegriff wie "hallo?" wird z.B. wirklich nur nach Tabellenzeilen gesucht, die genau den Text »hallo?« als Vollübereinstimmung enthalten, das Fragezeichen ist hier kein Platzhalter für ein beliebiges anderes Zeichen.
    • Sollten Sie statt Anführungszeichen den =-Operator verwenden, gibt es dagegen einen Unterschied zwischen serverseitiger und clientseitiger Suche (vgl. Hinweis: Zwei unterschiedliche Implementierungen): Die serverseitige Suche unterstützt Wildcards hinter =, die clientseitige JavaScript-Suche nicht – die behandelt = und " als äquivalent.
  • Zur Groß-/Kleinschreibung: Auch hier gibt es einen Unterschied zwischen serverseitiger und clientseitiger Suche (vgl. Hinweis: Zwei unterschiedliche Implementierungen):
    • Die clientseitige Suche ignoriert grundsätzlich die Groß-/Kleinschreibung,
    • bei der serverseitigen Suche wird die Groß-/Kleinschreibung in der Schreibweise mit Anführungszeichen " „wörtlich genommen“, also beachtet, bei der Schreibweise mit =-Operator dagegen ignoriert.
>, <, >= und <=
Dies sind Vergleichsoperatoren „größer als“, „kleiner als“, „größer oder gleich“ sowie „kleiner oder gleich“ und beziehen sich auf eine vorgegebene Ordnung der Spalte je nach Spaltentyp:
  • Bei Textspalten bezieht sich das typischerweise auf eine alphabetische Ordnung. Der Suchbegriff >Berthold wird also nur auf Tabellenzellen zutreffen, deren Inhalt bei alphabetischer Sortierung hinter »Berthold« einsortiert würde, also Namen wie »Anton« oder »Berta« ausfiltern.
  • In Zahlenspalten sollte – sofern diese korrekt erkannt werden – tatsächlich ein numerischer und kein alphabetischer Vergleich erfolgen.
  • In Datumsspaten sollte – sofern diese korrekt erkannt werden – entsprechend eine zeitliche Ordnung zugrunde gelegt werden, also z.B. >=15.05.2025 alle Zeilen mit einem Datum vor diesem 15. Mai ausfiltern.

  1. Falls Sie sich fragen, warum bekannte Unterschiede beibehalten wurden und die Suchroutinen in diesem Hinblick nicht angeglichen wurden: Das hat teils technische Gründe, und teils hängt es damit zusammen, dass nur die serverseitige Suche im Online-Übungssystem eine Eigenentwicklung ist, die wir anpassen können, während die clientseitige Suche aus einer Standard-Javascript-Library stammt. In Fällen, in denen wir die serverseitige, eigene Lösung besser finden – gerade im Hinblick aufs Durchsuchen wirklich umfangreicher Tabellen, für die ja die serverseitige Implementierung verwendet wird –, haben wir sie absichtlich so entwickelt und gelassen und nicht nur um der Einheitlichkeit willen „verschlechtert“.  ↩︎