RegexGlobalMatch

value RegexGlobalMatch ( value rxPattern, BYREF value rxIterator, string strSubject, value Offset = 0, value MatchType = REGEX_MatchType_NormalMatch, value MatchOptions = REGEX_Match_NoMatchOption  );

Rückgabewert

Rückgabewert

Beschreibung

TRUE / true / 1

Der RegexIterator-Verweis rxIterator wurde erfolgreich erstellt.

FALSE / false / 0

Der übergebene Regex-Verweis für rxPattern ist ungültig.

Parameter

rxPattern

Ein gültiger Regex-Verweis, der zur Analyse der Zeichenkette strSubject verwendet werden soll.

rxIterator

Wird mit einem gültigem RegexIterator-Verweis geladen, der das Ergebnis der Auswertung enthält.
Zur weiteren Verarbeitung muss dieser RegexIterator-Verweis an weiterführende RegexIterator-Funktionsaufrufe übergeben werden.

strSubject

Die Zeichenkette, die anhand des Regex-Verweises rxPattern, analysiert werden soll.

Offset

Die Position ab der die Analyse in der Zeichenkette strSubject beginnen soll.

MatchType

Der MatchType gibt an, wie eine Übereinstimmung mit dem Filtermuster bewertet werden soll.

Einer der folgenden Werte ist möglich:

MatchType

Beschreibung

REGEX_MatchType_NormalMatch
(Standardwert = 0x00)

Es wird nach normaler Übereinstimmung gesucht.

REGEX_MatchType_PartialPreferCompleteMatch

Die Zeichenkette wird nach teilweiser Übereinstimmung des Filtermusters durchsucht, jedoch wird eine vollständige Übereinstimmung bevorzugt.
Wird eine teilweise Übereinstimmung gefunden, so wird trotzdem nach einer vollständigen Übereinstimmung weitergesucht. Wird keine vollständige Übereinstimmung gefunden, so wird die teilweise Übereinstimmung erfasst.

REGEX_MatchType_PartialPreferFirstMatch

Die Zeichenkette wird nach teilweiser Übereinstimmung des Filtermusters durchsucht.
Wird eine teilweise Übereinstimmung gefunden, so wird nicht nach einer vollständigen Übereinstimmung weitergesucht.

MatchOptions

Die MatchOptions geben an, welche zusätzlichen Übereinstimmungsregeln gelten sollen.

Eine binäre Oder-Kombination der folgenden Werte ist möglich:

MatchType

Beschreibung

REGEX_Match_NoMatchOption
(Standardwert = 0x00)

Es sollen keine zusätzlichen Übereinstimmungsregeln verwendet werden.

REGEX_Match_AnchoredMatchOption

Eine Übereinstimmung muss genau an der vorgegebenen Stelle Offset beginnen, auch wenn im Filtermuster kein entsprechenden Metazeichen enthalten ist.

Bemerkungen

Versucht anhand des Filtermusters (regulärer Ausdruck) von rxPattern alle Übereinstimmungen in der Zeichenkette strSubject ab der Position Offset zu finden. Dabei wird die Art und Weise wie die Übereinstimmung bewertet werden soll durch MatchType und welche zusätzlichen Übereinstimmungsregeln gelten durch MatchOptions festgelegt. Das Ergebnis der Analyse wird als ein RegexIterator-Verweis in rxIterator abgelegt.

Wird das Ergebnis der Analyse nicht weiter benötigt, so sollte ein RegexIteratorClose für den RegexIterator-Verweis rxIterator aufgerufen werden, da ansonsten die Ergebnisse im Arbeitsspeicher verbleiben. Wird das Filtermuster rxPattern allerdings sowieso per RegexClose gelöscht, so kann auf zugehörige RegexIteratorClose Aufrufe verzichtet werden.

Ein gültiger RegexIterator-Verweis enthält nach dem Aufruf von RegexGlobalMatch einen oder mehrere RegexMatch-Verweise, die das Resultat der Übereinstimmungen beinhalten. Diese Kette von Übereinstimmungen kann nur einmalig, nach dem Erzeugen des RegexIterator-Verweis rxIterator,  durch aufeinanderfolgende RegexIterartorNext Aufrufe abgerufen werden. Danach stellt sich der RegexIterator-Verweis rxIterator als leer dar.

Ein gültiger RegexIterator-Verweis kann nur mit RegexIterator-Funktionsausrufen verwendet werden.

Beispiel

value rxPattern, rxMatch, rxIterator;
string strResult, strLastError;

//Zusammenhängende numerische Zeichenfolgen erfassen
if (! RegexCreate (rxPattern, "\\d+")) 
    return (RegexGetLastError (strLastError));
end
RegexGlobalMatch (rxPattern, rxIterator, "Test 123 xyz 345 23"); //es werden alle numerischen Zeichenfolgen erfasst = '123', '345' und '23'

while (RegexIteratorHasNext (rxIterator)) //ist eine weitere Übereinstimmung vorhanden?
    rxMatch = RegexIteratorNext (rxIterator); //nächste Übereinstimmung auslesen
    strResult += RegexMatchCaptured (rxMatch);
    strResult += "\n";
end 

Die Regex-Funktionen

Siehe auch RegexCreate, RegexSetPattern, RegexClose, RegexGetLastError, RegexMatch, RegexGlobalMatch, RegexMatchCaptured, RegexIteratorHasNext, RegexIteratorNext, RegexIteratorPeekNext