| Operatoren |
tuple_regexp_match — Extrahieren von Teilen aus Zeichenketten mit Hilfe von regulären Ausdrücken.
tuple_regexp_match( : : Data, Expression : Matches)
tuple_regexp_match wendet den regulären Ausdruck Expression auf eine oder mehrere Zeichenketten in Data an und liefert jeweils die erste dem Suchmuster entsprechende Teilzeichenkette in Matches 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') gesetzt ist.
Weiterhin lassen sich einige Optionen setzen, indem man für Expression ein Tupel übergibt. In diesem Fall wird das erste Element als regulärer Ausdruck behandelt, und jedes weitere Element als Option.
'ignore_case': Ignorieren von Groß- und Kleinschreibung
'multiline': '^' und '$' stehen für Start und Ende einzelner Zeilen
'dot_matches_all': '.' steht auch für Newlines
'newline_lf', 'newline_crlf', 'newline_cr': Kodierung von Newlines in den Eingabedaten. Per Default wird unter Windows CR/LF und unter unixartigen Systemen LF verwendet.
Falls das Eingabetupel leer ist, gibt der Operator ein leeres Tupel zurück.
HDevelop unterstützt eine Inline-Operation für tuple_regexp_match, die innerhalb eines Ausdrucks in der folgenden Syntax verwendet werden kann:
Matches := regexp_match(Data, Expression)
Eingabezeichenketten, auf die das Suchmuster angewendet wird
Regulärer Ausdruck.
Defaultwert: '.*'
Wertevorschläge: '.*', 'ignore_case', 'multiline', 'dot_matches_all', 'newline_lf', 'newline_crlf', 'newline_cr'
Dem Suchmuster entsprechende Teilzeichenketten
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']
tuple_regexp_replace, tuple_regexp_test, tuple_regexp_select
Perl Compatible Regular Expressions (PCRE), http://www.pcre.org/
Foundation
| Operatoren |