###Function###
StringRegExp

###Description###
Prft, ob ein String dem Suchmuster eines regulren Ausdrucks entspricht.

###Syntax###
StringRegExp ( "test", "pattern" [, flag [, offset]] )


###Parameters###
@@ParamTable@@
test
	Der zu prfende String.
pattern
	Das Suchmuster des regulren Ausdrucks.
flag
	[optional] Eine Zahl, die die Verhaltensweise der Funktion bestimmt. Siehe weiter unten fr Details. Der Standard ist 0.
offset
	[optional] Die Position des Strings, wo die Funktion beginnen soll (startet bei 1). Der Standard ist 1.
@@End@@
<br>
@@ParamTable@@
<b>Flag</b>
	<b>Werte</b>
0
	Gibt 1 (passend) oder 0 (nicht passend) zurck.
1
	Gibt ein Array mit der ersten bereinstimmung zurck.
2
	Gibt ein Array mit den bereinstimmungen zurck inkl. der vollstndigen bereinstimmung (Perl / PHP Stil).
3
	Gibt ein Array mit den globalen bereinstimmungen zurck.
4
	Gibt ein Array mit den globalen bereinstimmungen zurck inkl. der vollstndigen bereinstimmung (Perl / PHP Stil).
@@End@@

###ReturnValue###
<i>Flag = 0 :</i>

@@ReturnTable@@
@Error	Bedeutung
2 	Falsches Muster. @Extended = Offset des Fehlers im Muster.
@@End@@

<i>Flag = 1 oder 2 :</i>

@@ReturnTable@@
@Error	Bedeutung
0	Array ist gltig. @Extended fr die weiteren Offsets berprfen.
1	Array ist ungltig. Keine bereinstimmungen.
2	Falsches Suchmuster, Array ist ungltig. @Extended = Offset des Fehlers im Muster.
@@End@@

<i>Flag = 3 oder 4 :</i>

@@ReturnTable@@
@Error	Bedeutung
0	Array ist gltig.
1	Array ist ungltig. Keine bereinstimmungen.
2	Falsches Suchmuster, Array ist ungltig. @Extended = Offset des Fehlers im Muster.
@@End@@


###Remarks###
Regulre Ausdrcke sind eine kompakte Art, ein Suchmuster fr zu suchende Strings anzugeben. Regulre Ausdrcke sind Strings, in denen einfache Textzeichen angeben, welcher Text in dem Zielstring existieren muss. Einige Zeichen haben eine besondere Bedeutung, um anzugeben, welche Variabilitt in dem Zielstring erlaubt ist. Fr regulre Ausdrcke in AutoIt ist normalerweise die Gro-/Kleinschreibung relevant.

Regulre Ausdrcke werden aus einem oder mehreren der folgenden einfachen Sonderzeichen gebildet. Ist ein Zeichen nicht in der folgenden Tabelle enthalten, dann steht es nur fr sich selbst.

Wiederholungszeichen oder auch Quantifizierer genannt (*, +, ?, {...} ) versuchen die grtmgliche Entsprechung zu finden, auer wenn ihnen direkt ein Fragezeichen folgt; dann wird die kleinstmgliche Entsprechung der nachfolgenden Zeichen genommen.

Verschachtelte Gruppen sind erlaubt, aber es ist zu beachten, dass alle Gruppen dem zurckgegebenen Array zugewiesen werden, wobei die ueren nach den inneren Gruppen bercksichtigt werden. Verwendet man statt der normalen Gruppierung () eine nicht-fangende Gruppierung (?: ... ) oder (?> ... ) wird die Gruppe dem zurckgegebenen Array nicht hinzugefgt.

Alles was in einer runden Klammer "()" steht wird als Gruppe bzw. Subpattern bezeichnet. Der Inhalt mu komplett in dem zu prfenden Ausdruck enthalten sein. Alles was eingeklammert wird, wird in SubPatterns geschrieben. Diese knnen dann mit \1,\2...,\n abgerufen werden.
Alles was in einer eckigen Klammer "[]" steht wird als Set bezeichnet. Dort mu lediglich ein Zeichen in dem zu prfenden Ausdruck enthalten sein.

Eine komplette Beschreibung kann <b><a href="http://www.autoitscript.com/autoit3/pcrepattern.html" target="_blank">hier</a></b> (englisch) eingesehen werden.

<b>Achtung</b>: schlechte regulre Ausdrcke knnen zu einer dauerhaft hohen CPU-Auslastung fhren und diese eventuell beschdigen.

<b><u>Passende Zeichen</u></b>

@@ParamTable@@
[ ... ]                                                                                                                                           
	Findet jedes Zeichen in dem Set.
	<b>[aeiou]</b> findet alle kleingeschriebenen Vokale.
	Ein zusammenhngendes Set kann definiert werden, indem ein Strich zwischen dem ersten und letzten Zeichen gesetzt wird. <b>[a-z]</b> findet alle kleingeschriebenen Zeichen.
	Um einen Strich in einem Set einzubeziehen (<b>-</b>), ist der Strich als erstes oder letztes Zeichen des Sets zu verwenden.
	Um eine schlieende Klammer im Set zu verwenden, ist es als erstes Zeichen im Set zu verwenden. <b>[][]</b> findet alle [ oder ].
	Es ist zu beachten, das Sonderzeichen ihre ursprngliche Bedeutung im Set <b>verlieren</b>; mit Ausnahme von <b>\\</b>, <b>\^</b>, <b>\-</b>, <b>\[</b> und <b>\]</b>, die dem vorangestellten Backslash innerhalb des Sets folgen (Fachbegriff "escapen").
[^ ... ]
	Findet alle Zeichen welche <b>nicht</b> im Set enthalten sind.
	<b>[^0-9]</b> findet alles auer Ziffern. Um ein Caret (<b>^</b>) ins Set einzubinden, muss es nach dem Anfang des Sets stehen oder seine durch einen Backslash seine Bedeutung aufgehoben werden(\^).
[:class:]
	Findet ein Zeichen aus der gegebenen Klasse. 
	Gltige Klassen siehe unten unter "Zeichenklassen":
	Also ist [0-9] equivalent zu [[:digit:]], welches wiederum equivalent zu \d ist.
[^:class:]
	Findet alle Zeichen welche <b>nicht</b> in der Klasse vertreten sind, aber nur wenn ^ das erste Zeichen ist.
( ... )
	Gruppe.
	Die Elemente in der Gruppe werden in Reihenfolge bearbeitet und knnen zusammen wiederholt werden.
	<b>(ab)+</b> entspricht "ab" oder "abab", aber nicht "aba". Eine Gruppe speichert auch den Text ab, der mit dem Set bereinstimmt, um ihn bei einem Rckverweis und in dem Rckgabearray der Funktion zu benutzen, abhngig von dem Flag-Parameter.
	Der Inhalt der Gruppe wird berschrieben, sobald ein Wiederholungszeichen auf die Gruppe angewandt wird.
(?i)
	Bei der Auswertung des regulren Ausdrucks wird nach dem Flag nicht zwischen Gro-/Kleinschreibung unterschieden. Dies wird nicht als Gruppe behandelt. 
(?-i)
	(Standard) Bei der Auswertung des regulren Ausdrucks wird nach dem Flag zwischen Gro-/Kleinschreibung unterschieden. Dies wird nicht als Gruppe behandelt. 
(?i ... )
	Bei der Auswertung des regulren Ausdrucks wird bei der Suche innerhalb der Gruppe nicht zwischen Gro-/Kleinschreibung unterschieden. Es verhlt sich wie eine normale Gruppe. 
(?-i ... )
	Bei der Auswertung des regulren Ausdrucks wird bei der Suche innerhalb der Gruppe zwischen Gro-/Kleinschreibung unterschieden. Es verhlt sich wie eine normale Gruppe. 
(?: ... )
	Jedes gruppierte Elemente wird standardmig in ein neues Subpattern geschrieben. Durch ?: wird dies verhindert (Nicht-aufzeichnende Gruppe)
(?i: ... )
	Bei der Auswertung des regulren Ausdrucks wird bei der Suche innerhalb der Gruppe nicht zwischen Gro-/Kleinschreibung unterschieden. Es verhlt sich wie eine nicht-aufzeichnende Gruppe. 
(?-i: ... )
	Bei der Auswertung des regulren Ausdrucks wird bei der Suche innerhalb der Gruppe zwischen Gro-/Kleinschreibung unterschieden. Es verhlt sich wie eine nicht-aufzeichnende Gruppe. 
(?# ... )
	Erlaubt es, Kommentare in das Suchmuster einzufgen. Hierfr wird der Parameter (?x) bentigt.
(?m)
	^ und $ finden Zeilenschaltungen innerhalb der Datenmenge.
(?s)
	"." findet alle Zeichen, auch Zeilenumbrche (als Standard findet "." keine Zeilenumbrche).
(?x)
	Ignoriert Whitespace-Zeichen und # Kommentare. 
(?U)
	Kehrt die Standardeinstellung fr Gierigkeit der Quantifzierer um (siehe auch ?).
(?<=...)
	prft, was vor der bereinstimmung stehen darf.
(?=...)
	prft, was nach der bereinstimmung stehen darf.
(?<!...)
	prft, was vor der bereinstimmung <b>nicht</b> stehen darf.
(?!...)
	prft, was nach der bereinstimmung <b>nicht</b> stehen darf.
...{1}
	darf 1-mal auftreten. Die Gruppe oder das Zeichen, das auftreten darf vor die geschweifte Klammer. Die Anzahl in die geschweifte Klammer. Siehe <b>Wiederholungszeichen</b>
<b>.</b>
	Findet jedes einzelne Zeichen (auer Zeilenumbrche).
|
	Oder. Der Ausdruck auf der einen Seite <b>oder</b> auf der anderen Seite wird gefunden.
\
	<i>Schaltet</i> ein Sonderzeichen aus (das Sonderzeichen wird dann als Zeichen gefunden) oder schaltet ein Sonderzeichentyp ein (Fachbegriff "escapen" o. "maskieren").
\\
	Findet alle tatschlichen Backslashs (\).
^
	Auerhalb einer Zeichenklasse (Set) findet dieses Zeichen einen Zeilenanfang. Hierfr muss (?m) als zustzlicher Parameter genutzt werden. wird (?m) nicht genutzt, steht dieses Zeichen fr den Anfang der Datenmenge und ist equivalent zu \A
$
	Findet ein Zeilenende innerhalb der Datenmenge. Hierfr muss, wie auch bei ^, der Parameter (?m) genutzt werden.
\a
	Alarmzeichen, gleich dem Kontrollzeichen BEL (chr(7)).
\A
	Findet nur am Anfang des Strings.
\b
	Findet an der Wortgrenze.
\B
	Findet alles auer an der Wortgrenze.
\c
	Findet ein Kontrollzeichen, basierend auf dem nchsten Zeichen. Zum Beispiel, <b>\cM</b> entspricht Strg-M.
\d
	Findet eine Ziffer (0-9).
\D
	Findet alles auer Ziffern.
\e
	Findet ein Escape-Zeichen (chr(27)).
\E
	Beendet ein Zitat. Siehe \Q
\f
	Findet das Kontrollzeichen Seitenvorschub(chr(12)).
\h
	Alle waagerechten Whitespace-Zeichen.
\H
	Alle Zeichen, die keine waagerechten Whitespace-Zeichen sind.
\n
	Findet einen Zeilenvorschub(@LF, chr(10)).
\Q
	Zitat, d.h. alle Sonderzeichen/Suchmuster bis zum nchsten \E werden als normale Zeichen behandelt.
\r
	Findet ein Wagenrcklaufzeichen (@CR, chr(13)).
\s
	Findet alle Leerzeichentypen: Chr(9) bis Chr(13), welche Tabulator, Zeilenschaltung, senkrechter Tab, Seitenvorschub, Wagenrcklauf und das Leerzeichen sind ( Chr(32) ).
\S
	Findet alles auer Leerzeichentypen.
\t
	Findet einen Tabulator (chr(9)).
\v
	Jede vertikale Leerzeichentypen.
\V
	Jedes Zeichen auer vertikale Leerzeichentypen.
\w
	Findet Buchstaben: a-z, A-Z ,0-9 oder Unterstrich (_).
\W
	Findet alles auer Buchstaben.
\###
	Findet ASCII Zeichen, dessen Code angegeben ist, oder das ber einen Rckverweis angegeben ist. Kann bis zu 3 Oktalziffern beinhalten. Findet Rckverweise falls vorhanden. Findet die Gruppe mit der hchsten Prioritt. Zum Beispiel wrde <b>([[:alpha:]])\1</b> doppelte Buchstaben finden.
\x##
	Findet ASCII Zeichen, deren Code hexadezimal angegeben ist. Kann aus bis zu 2 Hex-Ziffern bestehen.
\z
	Findet Zeichen nur am Ende des Strings.
\Z
	Findet Zeichen nur am Ende eines Strings oder vor einer neuen Zeile am Ende.
@@END@@

<u><b>Wiederholungszeichen oder auch Quantifizierer genannt</u></b>

@@ParamTable@@
{<i>x</i>}
	Wiederholt die bisherigen Zeichen, Sets oder Gruppen genau <i>x</i> mal.
{<i>x</i>,}
	Wiederholt die bisherigen Zeichen, Sets oder Gruppen mindestens <i>x</i> mal.
{0,<i>x</i>}
	Wiederholt die bisherigen Zeichen, Sets oder Gruppen hchstens <i>x</i> mal.
{<i>x</i>, <i>y</i>}
	Wiederholt die bisherigen Zeichen, Sets oder Gruppen zwischen <i>x</i> und inklusive <i>y</i> mal.
*
	Wiederholt die bisherigen Zeichen, Sets oder Gruppen kein oder mehrmals. quivalent zu {0,}
+
	Wiederholt die bisherigen Zeichen, Sets oder Gruppen mindestens einmal. quivalent zu {1,}
?
	Die bisherigen Zeichen, Sets oder Gruppen drfen hchstens einmal auftreten. quivalent zu {0, 1}
? (nach Wiederholungszeichen)
	Sucht die krzeste passende Stelle anstatt der lngsten. Standardmig sind Wiederholungszeichen gierig und geben die lngste Stelle zurck. Durch das ? wird die krzeste Stelle zurckgegeben.
@@END@@

<u><b>Zeichenklassen</u></b>

Um eine der folgenden Zeichenklassen zu nutzen, muss Sie wiederum in ein Set eingebunden werden. (Bsp: [[:alnum:]])

@@ParamTable@@
[:alnum:]
	Buchstaben und Ziffern.
[:alpha:]
	Buchstaben.
[:ascii:]
	Zeichencodes 0 - 127.
[:blank:]
	Leerzeichen oder Tabulator.
[:cntrl:]
	Steuerungszeichen.
[:digit:]
	dezimale Ziffern (gleich wie \d).
[:graph:]
	druckbare Zeichen, ohne Leerzeichen.
[:lower:]
	Kleinbuchstaben.
[:print:]
	druckbare Zeichen, samt Leerzeichen.
[:punct:]
	druckbare Zeichen, ohne Buchstaben und Ziffern.
[:space:]
	Leerzeichentypen (nicht exakt das gleiche wie \s, \s findet auch VT: chr(11)).
[:upper:]
	Grobuchstaben.
[:word:]
	Buchstaben (genauso wie \w).
[:xdigit:]
	hexadezimale Ziffern.
@@END@@

###Related###
StringInStr, StringRegExpReplace

###Example###
@@IncludeExample@@
