Findet überall: Per Voreinstellung findet ein regulärer Ausdruck Übereinstimmungen überall in der zu durchsuchenden Zeichenfolge. Der reguläre Ausdruck abc findet z.B. sowohl abc123 als auch 123abc und 123abcxyz. Um die Suche auf den Anfang oder das Ende einer Zeichenfolge zu beschränken, muss ein Anker verwendet werden.
Maskierte (escaped) Zeichen: Die meisten Zeichen wie abc123 können innerhalb eines regulären Ausdrucks normal verwendet werden. Den Zeichen \.*?+[{|()^$ sind aber bestimmte Funktionen zugeordnet. Ihnen muss deshalb ein Backslash ("\") vorangestellt werden, wenn sie als normale Zeichen behandelt werden sollen. \. ist z.B. ein normaler Punkt und \\ ein normaler Backslash. Diese Form der Maskierung ist unnötig, wenn man den Text in \Q und \E einschließt (z.B. \QNormaler Text mit Klammern ()\E).
Case-sensitive: Per Voreinstellung beachten reguläre Ausdrücke die Groß/Kleinschreibung (case-sensitive). Dieses Verhalten kann mit der Option "i" geändert werden. Das Suchmuster i)abc sucht z.B. nach "abc", ohne die Schreibung zu beachten. Weitere Optionen sind hier beschrieben.
| . | Der Punkt steht für jedes einzelne Zeichen mit Ausnahme des Zeilenvorschubs (`r und `n). ab. findet z.B. abc und abz und ab_ |
| * | Der Stern findet entweder kein, ein oder mehrere aufeinanderfolgende Vorkommen der/des voranstehenden Zeichens, class (Zeichengruppe) oder subpattern (Teilmusters). a* findet z.B. ab und aaab. Es liefert auch einen Treffer auf der Position des ersten Zeichens einer Zeichenfolge, die überhaupt kein "a" enthält. Wildcard: Das dot-star Muster .* ist das allgemeingültigste Muster, weil es sowohl für kein als auch mehrere Vorkommen jedes Zeichens (ausgenommen Zeilenvorschub: `r und `n) einen Treffer liefert. abc.*123 z.B. findet sowohl abcAnything123 als auch abc123. |
| ? | Das Fragezeichen findet entweder kein oder genau ein Vorkommen der/des voranstehenden Zeichens, Zeichengruppe oder Teilmusters. Man kann sich das als "das voranstehende Zeichen ist optional" vorstellen. colou?r z.B. findet color und colour, weil das "u" optional ist. |
| + | Das Pluszeichen findet ein oder mehrere aufeinanderfolgende Vorkommen der/des voranstehenden Zeichens, Zeichengruppe oder Teilmusters. a+ z.B. findet ab und aaab. Aber anders als a* und a? liefert a+ keinen Treffer, wenn die zu durchsuchende Zeichenfolge kein "a" enthält. |
| {min,max} |
Findet min bis max aufeinanderfolgende Vorkommen der/des voranstehenden Zeichens, Zeichengruppe oder Teilmusters. a{1,2} z.B. findet ab, aber nur die ersten beiden "a" in aaab. Desweiteren bedeutet {3} genau 3 aufeinanderfolgende Vorkommen und {3,} 3 oder mehr aufeinanderfolgende Vorkommen. Anmerkung: Die angegebenen Zahlen müssen kleiner als 65536 und die erste kleiner als die oder gleich der zweiten sein. |
| [...] | Sets of characters (Zeichengruppen): Die eckigen Klammern umschließen eine Liste, einen Bereich von Zeichen oder beides. [abc] z.B. bedeutet "jedes einzelne Zeichen, das a, b oder c ist". Ein Bindestrich (-) zwischen zwei Zeichen definiert einen Bereich. [a-z] z.B. bedeutet "jedes einzelne Zeichen vom kleinen "a" bis zum kleinen "z"". Einer Zeichengruppe können *, ?, +, or {min,max} folgen. [0-9]+ z.B. findet ein oder mehrere aufeinanderfolgende Vorkommen jeder Ziffer; deswegen findet es xyz123 aber nicht abcxyz. Listen und Bereiche können kombiniert werden. [a-zA-Z0-9_] z.B. bedeutet "jedes einzelne Zeichen, das ein Buchstabe, eine Ziffer oder ein Unterstrich ist". |
| [^...] | Findet jedes einzelne Zeichen, das nicht in der Zeichengruppe enthalten ist. [^/]* z.B. findet kein, ein oder mehrere aufeinanderfolgende Vorkommen jedes einzelnen Zeichens, das kein Schrägstrich ist, wie z.B. http://. Ebenso findet [^0-9xyz] jedes einzelne Zeichen, das weder eine Ziffer noch einer der Buchstaben x, y oder z ist. |
| \d | Findet jede einzelne Ziffer (entspricht der Zeichengruppe [0-9]). Umgekehrt bedeutet \D (Großbuchstabe) "jedes Zeichen, das keine Ziffer ist". Dies und die beiden folgenden Symbole können auch in Zeichengruppen verwendet werden. [\d.-] z.B. bedeutet "jede Ziffer, Punkt oder Minuszeichen". |
| \s | Findet jedes "weiße" (whitespace) Zeichen, also hauptsächlich Leerzeichen, Tabulator und Zeilenvorschub (`r und `n). Umgekehrt bedeutet \S (Großbuchstabe) "jedes nicht weiße Zeichen". |
| \w | Findet jedes einzelne "Wort"-Zeichen, nämlich alphanumerische Zeichen oder den Unterstrich. Das entspricht [a-zA-Z0-9_]. Umgekehrt bedeutet \W (Großbuchstabe) "jedes Zeichen, das nicht alphanumerisch oder ein Unterstrich ist". |
| ^ $ | Circumflex (^) und Dollarzeichen ($) werden Anker genannt, weil sie selbst keine bestimmten Zeichen finden, aber das Suchmuster am Anfang oder am Ende der zu durchsuchenden Zeichenkette "verankern". ^ kann am Anfang eines Suchmusters stehen und bedeutet, dass das Suchmuster am Anfang einer Zeichenfolge oder einer Zeile stehen muss. ^abc z.B findet abc123 aber nicht 123abc. $ kann am Ende eines Suchmusters stehen und bedeutet, dass das Suchmuster am Ende einer Zeichenfolge oder Zeile stehen muss. abc$ z.B. findet 123abc aber nicht abc123. Die beiden Anker können kombiniert werden. ^abc$ z.B. findet nur abc (d.h., es darf innerhalb der Zeichenfolge bzw. einer Zeile kein anderes Zeichen davor oder dahinter stehen). Wenn die zu durchsuchende Zeichenfolge aus mehreren Zeilen besteht, können die Anker mit der Option "m" am Anfang bzw. am Ende jeder einzelnen Zeile "verankert" werden. m)^abc$ z.B. findet 123`r`nabc`r`n789. Ohne die Option "m" würde hier nichts gefunden. |
| \b | \b bedeutet dass das Suchmuster an einer "Wortgrenze" stehen muss, und ist damit den Ankern vergleichbar. Wenn das aktuelle Zeichen ein "Wort"-Zeichen (\w)ist, darf das davor stehende Zeichen kein "Wort"-Zeichen sein. \b wird normalerweise verwendet, um bei der Suche nach einem Wort zufällige Treffer innerhalb eines längeren Wortes zu vermeiden. \bcat\b z.B. liefert keinen Treffer für catfish, es findet aber cat unabhängig davon, ob es von Satzzeichen, Leer- oder z.B. Anführungszeichen umgeben ist. \bcat findet cat nur an einem Wortanfang, cat\b nur an einem Wortende. Umgekehrt verlangt \B (Großbuchstabe), dass das aktuelle Zeichen nicht an einer Wortgrenze steht. |
| | | | trennt zwei oder mehrere Alternativen. Die Suche ist erfolgreich, wenn eine der Alternativen gefunden wird. gray|grey z.B. findet sowohl gray als auch grey. Für dieses Beispiel kann das auch mit dem Muster gr(a|e)y mit Hilfe der unten beschriebenen Klammerung erreicht werden. |
| (...) | In Klammern eingeschlossene Elemente werden hauptsächlich verwendet, um:
|
| \t \r etc. | Diese Escape-Folgen stehen für spezielle Zeichen. Die Gebräuchlichsten sind \t (Tabulator), \r (Wagenrücklauf CR) und \n (Neue Zeile LF). In AutoHotkey kann auch das Akzentzeichen (`) anstelle des Backslashs verwendet werden. Escape-Folgen der Form \xhh werden ebenfalls unterstützt, wobei hh der hexadezimale Wert eines beliebigen ANSI Zeichens im Bereich von 00 bis FF ist. Ab Version v1.0.46.06 bedeutet \R "jeder Zeilenvorschub jeder Art", nämlich jene die unter `a-Option aufgelistet sind, wenn es nicht innerhalb einer Zeichengruppe steht; dort wird \R als Buchstabe "R" gewertet. In v1.0.47.05+, können Zeilenvorschübe auf CR, LF und CRLF beschränkt werden indem (*ANYCRLF) in Großbuchstaben am Beginn des Musters angegeben wird (nach den Optionen); z.B. im)(*ANYCRLF)^abc$ |
Greed (Gier): Per Voreinstellung sind *, ?, + und {min,max} "gierig", weil sie für den Treffer eines Suchmusters alle Zeichen bis zum letztmöglichen verwenden ("verschlucken"). Um stattdessen die Suche beim erstmöglichen Zeichen zu beenden, mit dem das Suchmuster vollständig gefunden wurde, wird ihnen ein Fragezeichen angehängt. Das Muster <.+> (ohne Fragezeichen) z.B. bedeutet: "Suche ein <, gefolgt von einem oder mehreren beliebigen Zeichen, gefolgt von >". Um zu vermeiden, dass dieses Muster den gesamten String <em>text</em> findet, muss dem Pluszeichen ein Fragezeichen angehängt werden: <.+?>. Damit wird die Suche bereits beim ersten '>' beendet und liefert als Treffer nur das erste HTML-Tag <em>.
Look-ahead und look-behind assertions: Die Gruppen (?=...), (?!...), (?<=...) und (?<!...) werden assertions (Ver- oder Absicherungen) genannt, weil sie die Erfüllung einer Bedingung verlangen, ohne selbst Zeichen zu verbrauchen. abc(?=.*xyz) z.B. ist eine look-ahead (vorwärts schauende) assertion, die verlangt, dass die Zeichenfolge xyz irgendwo nach der Zeichenfolge abc steht, wenn nicht, ergibt das komplette Suchmuster keinen Treffer. (?=...) wird als positive Vorausschau bezeichnet, weil erwartet wird, dass das angegebene Muster existiert. Umgekehrt ist (?!...) eine negative Vorausschau, weil erwartet wird, dass das angegebene Muster nicht existiert. Ebenso sind (?<=...) und (?<!...) positive und negative look-behinds (rückwärts schauende), weil sie vor der aktuellen Position suchen und nicht danach. Look-behinds sind eingeschränkter als look-aheads, weil sie keine Mengenangaben für variable Anzahlen wie *, ? und + unterstützen.
Siehe auch: Reguläre Ausdrücke werden unterstützt von RegExMatch(), RegExReplace() und SetTitleMatchMode.
Abschließende Anmerkung: Obwohl auf dieser Seite die meisten der gebräuchlichen RegEx-Eigenschaften angesprochen werden, gibt es noch einige hier nicht erwähnte, die man sich anschauen sollte, wie z.B. bedingte Teilmuster. Das vollständige PCRE-Manual finden Sie auf www.pcre.org/pcre.txt.