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 49.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]+
- ...
QF-Test bietet Ihnen bei Attributen, welche reguläre Ausdrücke
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. Wo es nicht
möglich ist, diese Funktion zu verwenden, zum Beispiel für
Variablen, kann die spezielle Syntax
${quoteregexp:$(myVariable)}
genutzt
werden, die die Sonderzeichen im Wert der Variablen mit '\' versieht,
siehe Spezielle Gruppen.