Reguläre Ausdrücke - Regexps

Die regulären Ausdrücke, die Sie in den Suchen und Ersetzen Dialogen und an diversen anderen Stellen wie den Attributen 'Merkmal' und 'Primärindex' oder in Checks verwenden können, nutzen alle die standard Java-Regexp-Syntax.

8.0+ Vor QF-Test Version 3.1 wurde das GNU Regexp Package verwendet. Danach war es noch per Option als Alternative verfügbar. Mit QF-Test 8.0 wurde GNU Regexp ganz aus QF-Test entfernt.

Eine detaillierte Dokumentation für Regexps mit Hinweisen zu weiterführender Information und sogar einem ganzen Buch darüber, finden Sie bei der Java-Dokumentation für die Klasse java.util.regex.Pattern unter http://download.oracle.com/javase/1.5.0/docs/api/java/util/regex/Pattern.html. Ebenfalls einen Blick wert ist der Wikipedia-Eintrag.
Die wichtigsten Grundlagen haben wir kurz zusammengefasst:

  • Ein '.' steht für ein beliebiges Zeichen mit Ausnahme eines Zeilenumbruchs. Mit den neuen Java-Regexps können Sie Ihren Ausdruck mit dem eingebetteten Schalter (?s) starten, um zu erreichen, dass mehrzeiliger Text wie eine einzige Zeile behandelt wird und '.' damit für wirklich jedes Zeichen steht.
  • Zwischen '[' und ']' können Alternativen angegeben werden.
  • Ein '?' kennzeichnet ein optionales Element das 0 oder 1 mal vorkommen darf.
  • '+' bedeutet mindestens ein Element.
  • Ein '*' bedeutet: beliebig viele des vorhergehenden Elements (auch 0).
  • Eine Gruppe wird mit '(' und ')' gebildet. Die Zählung der Untergruppen beginnt mit 0 für den Gesamtausdruck, 1 für die erste '(' Klammer etc. Bei Suchen und Ersetzen Operationen expandiert $n in der ersetzen Zeichenkette zu der nten Gruppe. Beispiel: Um die Dateiendung aller Dateien welche mit /tmp/ anfangen von .foo mit .bar zu ersetzen, sucht man nach (/tmp/.*)\.foo und ersetzt dann mit $1.bar.
  • Der Balken '|' trennt Alternativen in einer Gruppe.
  • '\' hebt die Sonderbedeutung eines Zeichens auf oder definiert Sonderzeichen, z.B. '\n' für LineFeed (= Zeilenumbruch), '\r' für CarriageReturn (wird für QF-Test nicht benötigt, vgl. Abschnitt 48.4) oder '\t' für Tab.

Beispiele:

  • .* steht für einen beliebigen Text, der optional ist.
  • .+ steht für einen beliebigen Text, wobei allerdings mindestens ein Zeichen vorhanden sein muss, also einen Pflichttext.
  • [0-9] steht für eine beliebige Ziffer.
  • [0-9]+ steht für eine beliebige Folge von Ziffern, aber mindestens eine Ziffer muss vorhanden sein.
  • [0-9]{1,3} steht für eine beliebige Folge von Ziffern, allerdings sollte mindestens eine und maximal drei Ziffern erscheinen.
  • Beliebiger Text, der das Wort 'Baum' enthält: '.*Baum.*'.
  • Beliebiger mehrzeiliger Text: '(?s).*'
  • Das Wort 'Baum' in beliebigem Text durch das Wort 'Tree' ersetzen: '(.*)Baum(.*)' und zum Ersetzen $1Tree$2. In der Ersetzen Box geht das allerdings einfacher indem Sie einfach 'Baum' durch 'Tree' Ersetzen und dabei die Option 'Gesamtes Attribut vergleichen' ausschalten.
  • Suche nach 'Name' oder 'Namen': 'Namen?'
  • Suche nach 'Baum' oder 'Tree': '(Baum|Tree)'
  • Ein beliebiges Wort aus Buchstaben (ohne Umlaute) und Zahlen: [0-9a-zA-Z]+
  • ...

4.0+ QF-Test bietet Ihnen bei Attributen, welche reguläre Ausdrücke (vgl. Abschnitt 48.3) erlauben, den Kontextmenüeintrag »Text in regulären Ausdruck konvertieren« an, um Sonderzeichen von regulären Ausdrücken mit '\' zu versehen, um diese zu schützen.