KlassenKlassenKlassenKlassen | | | | Operatoren

tuple_regexp_matchtuple_regexp_matchTupleRegexpMatchtuple_regexp_matchTupleRegexpMatchTupleRegexpMatch (Operator)

Name

tuple_regexp_matchtuple_regexp_matchTupleRegexpMatchtuple_regexp_matchTupleRegexpMatchTupleRegexpMatch — Extrahieren von Teilen aus Zeichenketten mit Hilfe von regulären Ausdrücken.

Signatur

tuple_regexp_match( : : Data, Expression : Matches)

Herror tuple_regexp_match(const char* Data, const char* Expression, char* Matches)

Herror T_tuple_regexp_match(const Htuple Data, const Htuple Expression, Htuple* Matches)

Herror tuple_regexp_match(const HTuple& Data, const HTuple& Expression, char* Matches)

Herror tuple_regexp_match(const HTuple& Data, const HTuple& Expression, HTuple* Matches)

void TupleRegexpMatch(const HTuple& Data, const HTuple& Expression, HTuple* Matches)

HTuple HTuple::TupleRegexpMatch(const HTuple& Expression) const

void HOperatorSetX.TupleRegexpMatch(
[in] VARIANT Data, [in] VARIANT Expression, [out] VARIANT* Matches)

VARIANT HTupleX.TupleRegexpMatch(
[in] VARIANT Data, [in] VARIANT Expression)

static void HOperatorSet.TupleRegexpMatch(HTuple data, HTuple expression, out HTuple matches)

HTuple HTuple.TupleRegexpMatch(HTuple expression)

Beschreibung

tuple_regexp_matchtuple_regexp_matchTupleRegexpMatchtuple_regexp_matchTupleRegexpMatchTupleRegexpMatch wendet den regulären Ausdruck ExpressionExpressionExpressionExpressionExpressionexpression auf eine oder mehrere Zeichenketten in DataDataDataDataDatadata an und liefert jeweils die erste dem Suchmuster entsprechende Teilzeichenkette in MatchesMatchesMatchesMatchesMatchesmatches zurück. In der Regel wird eine Ausgabezeichenkette pro Eingabezeichenkette zurückgegeben, wobei die Zeichenketten leer sind, wenn keine Übereinstimmung gefunden wurde. Falls der reguläre Ausdruck jedoch Gruppen mit Teilergebnissen (siehe unten) enthält, hängt das Verhalten von der Anzahl der Eingabezeichenketten ab: Gibt es nur eine Eingabe, so ist das Ergebnis das Tupel aller Teilzeichenketten, die dem Suchmuster einer Gruppe entsprechen. Gibt es mehrere Eingaben, so wird für jede Eingabe das Ergebnis der ersten Gruppe zurückgegeben.

Eine Zusammenfassung der Syntax regulärer Ausdrücke folgt. Grundsätzlich steht jedes Zeichen im Suchmuster als Literal für ein entsprechendes Zeichen in den Eingabedaten, wobei jedoch die nachfolgend aufgeführten Symbole eine spezielle Bedeutung haben (die beschriebene Syntax ist kompatibel zu Perl):

^      Steht für den Anfang der Zeichenkette
$      Steht für das Ende der Zeichenkette, ggf. inklusive
       einem Newline als letztes Zeichen
.      Steht für jedes Zeichen außer Newline
[...]  Steht für jedes in den eckigen Klammern aufgeführte Literal.
       Ist das erste Zeichen ein '^', so ist der Ausdruck negiert.
       Mit dem Zeichen '-' kann man Wertebereiche angeben wie
       in '[A-Z0-9]'. Andere Zeichen verlieren ihre spezielle
       Bedeutung innerhalb eckiger Klammern, außer '\'.

*      Erlaubt 0 oder mehr Wiederholungen des vorhergehenden Literals / Gruppe
+      Erlaubt 1 oder mehr Wiederholungen
?      Erlaubt 0 oder 1 Wiederholung
{n,m}  Erlaubt n bis m Wiederholungen
{n}    Erlaubt genau n Wiederholungen

       Die obigen Wiederholungsquantifikatoren sind im Normalfall "gierig",
       d.h. es wird die maximal mögliche Übereinstimmung gesucht. Mit einem
       zusätzlichen ? wird die minimale Übereinstimmung gesucht, z.B. +?

|      Trennt alternative Suchausdrücke
( )    Gruppiert einen Unterausdruck und speichert ein Teilergebnis.
(?: )  Reine Gruppierung (z.B. für Wiederholungen) ohne Teilergebnis.

\      Escape-Zeichen, erlaubt die Verwendung eines Symbols mit spezieller
       Bedeutung als Literal. Achtung: Manche Sprachen wie HDevelop und C/C++
       verwenden den Backslash bereits als allgemeines Escape-Zeichen für
       Zeichenketten. In diesem Fall steht '\\.'"\\.""\\.""\\.""\\.""\\." für ein Punktliteral
       und '\\\\'"\\\\""\\\\""\\\\""\\\\""\\\\" für ein Backslashliteral. Darüber hinaus gibt es
       einige Sequenzen mit spezieller Bedeutung (wobei die groß geschriebene
       Variante jeweils die Negation darstellt):
       \d,\D  Steht für Ziffern
       \w,\W  Steht für Ziffern, Buchstaben und Unterstrich
       \s,\S  Steht für Leerraum (Whitespace)
       \b,\B  Steht für eine Wortgrenze

Falls der angegebene Ausdruck syntaktisch inkorrekt ist, wird als Fehler ein falscher Wert im Steuerparameter 2 bemängelt. Zusätzliche Informationen erhält man in einem Benachrichtigungsfenster, wenn set_system('do_low_error', 'true')set_system("do_low_error", "true")SetSystem("do_low_error", "true")set_system("do_low_error", "true")SetSystem("do_low_error", "true")SetSystem("do_low_error", "true") gesetzt ist.

Weiterhin lassen sich einige Optionen setzen, indem man für ExpressionExpressionExpressionExpressionExpressionexpression ein Tupel übergibt. In diesem Fall wird das erste Element als regulärer Ausdruck behandelt, und jedes weitere Element als Option.

Sonderfall: Leeres Eingabetupel

Falls das Eingabetupel leer ist, gibt der Operator ein leeres Tupel zurück.

HDevelop Inline-Operation

HDevelop unterstützt eine Inline-Operation für tuple_regexp_matchtuple_regexp_matchTupleRegexpMatchtuple_regexp_matchTupleRegexpMatchTupleRegexpMatch, die innerhalb eines Ausdrucks in der folgenden Syntax verwendet werden kann:

Matches := regexp_match(Data, Expression)

Parallelisierung

Parameter

DataDataDataDataDatadata (input_control)  string(-array) HTupleHTupleHTupleVARIANTHtuple (string) (string) (HString) (char*) (BSTR) (char*)

Eingabezeichenketten, auf die das Suchmuster angewendet wird

ExpressionExpressionExpressionExpressionExpressionexpression (input_control)  string(-array) HTupleHTupleHTupleVARIANTHtuple (string) (string) (HString) (char*) (BSTR) (char*)

Regulärer Ausdruck.

Defaultwert: '.*' ".*" ".*" ".*" ".*" ".*"

Wertevorschläge: '.*'".*"".*"".*"".*"".*", 'ignore_case'"ignore_case""ignore_case""ignore_case""ignore_case""ignore_case", 'multiline'"multiline""multiline""multiline""multiline""multiline", 'dot_matches_all'"dot_matches_all""dot_matches_all""dot_matches_all""dot_matches_all""dot_matches_all", 'newline_lf'"newline_lf""newline_lf""newline_lf""newline_lf""newline_lf", 'newline_crlf'"newline_crlf""newline_crlf""newline_crlf""newline_crlf""newline_crlf", 'newline_cr'"newline_cr""newline_cr""newline_cr""newline_cr""newline_cr"

MatchesMatchesMatchesMatchesMatchesmatches (output_control)  string(-array) HTupleHTupleHTupleVARIANTHtuple (string) (string) (HString) (char*) (BSTR) (char*)

Dem Suchmuster entsprechende Teilzeichenketten

Beispiel (HDevelop)

tuple_regexp_match ('abba', 'a*b*', Result)
* Returns 'abb'

tuple_regexp_match ('abba', 'b*a*', Result)
* Returns 'a'

tuple_regexp_match ('abba', 'b+a*', Result)
* Returns 'bba'

tuple_regexp_match ('abba', '.a', Result)
* Returns 'ba'

tuple_regexp_match ('abba', '[ab]*', Result)
* Returns 'abba'

tuple_regexp_match (['img123','img124'], 'img(.*)', Result)
* Returns ['123','124']

tuple_regexp_match ('mydir/img001.bmp', 'img(.*)\\.(.*)', Result)
* Returns ['001','bmp']

Alternativen

tuple_strstrtuple_strstrTupleStrstrtuple_strstrTupleStrstrTupleStrstr

Siehe auch

tuple_regexp_replacetuple_regexp_replaceTupleRegexpReplacetuple_regexp_replaceTupleRegexpReplaceTupleRegexpReplace, tuple_regexp_testtuple_regexp_testTupleRegexpTesttuple_regexp_testTupleRegexpTestTupleRegexpTest, tuple_regexp_selecttuple_regexp_selectTupleRegexpSelecttuple_regexp_selectTupleRegexpSelectTupleRegexpSelect

Literatur

Perl Compatible Regular Expressions (PCRE), http://www.pcre.org/

Modul

Foundation


KlassenKlassenKlassenKlassen | | | | Operatoren