Ausdruck gegen ein Muster vergleichen
<int>=match(<txt>,<rexp>)
Die Funktion match(<val>,<rexp>) wendet auf die Stringrepresentation von txt die den regulären Ausdruck rexp an und gibt einen Wert ungleich 0 zurück, wenn der Ausdruck passt. Vorlages reguläre Ausdrücke nutzen im Prinzip die Perl-Syntax, mit der Abweichung das Backslashes doppelt geschrieben werden müssen.
Beginnend mit 1.6rc4 setzt die Funktion zusätzlich nach einem Treffer eine Reihe von speziellen
Variablen, mit denen man auf Untermuster zugreifen kann. Dies geschieht in Anlehnung an Perl.
Im Einzelnen sind dies:
$& | gesamter Treffer |
$` | Text vor dem Treffer (Dollar gefolgt von einem Backtick) |
$´ | Text nach dem Treffer einfügen (Dollar gefolgt von einem Akut-Akzent, nicht Dollar und Single Quote / $' wie bei Perl!) |
$<i> | Trefferanteil des i-ten Untermusters (0<i<Anzahl der Subpatterns) |
Untermuster werden von links nach recht durch die Position der öffnenden runden
Klammer nummeriert.
txt | Ausdruck, dessen Textrepresentation mit dem Muster verglichen werden soll. |
rexp | Regulärer Ausdruck der auf den zu prüfenden Ausdruck angewendet wird. |
Wenn die Einheiten einen Namensstandard haben, dass alle Lehrer auf den String 'Lehrer' enden (z.B. Holzfaeller Lehrer):
$s=unit.name
#if match($s,'Lehrer$')
{
#message 'Einheit ist Lehrer'
}
Um die durch match() gesetzten Variablen zu verdeutlichen dient folgendes Beispiel:
$text='Ein dicker runder Gnom'
#if match($text,'d(\\w+)r')
{
; Hier sind jetzt folgende Werte gesetzt:
; $&='dicker'
; $1='icke'
; $+='icke'
; $`='Ein '
; $´=' runder Gnom'
}
after(), before(), change(), crop(), Reguläre Ausdrücke Revision 03 Jan 2006
|