Vorlage Dokumentationmatch()
Allgemeines
   Aufruf
   Einleitung
   Installation
   Konfiguration
   Syntax
Einführung
   MetabefehlsAusdruecke
   MetabefehlsSyntax
   RegulaereAusdruecke
   VordefinierteVariablen
Funktionen
   abs()
   after()
   and()
   antoi()
   before()
   ceil()
   change()
   close()
   crop()
   equals()
   exp()
   flatten()
   float()
   floor()
   int()
   isnothing()
   itoan()
   length()
   log()
   log10()
   match()
   not()
   open()
   or()
   random()
   read()
   readline()
   sign()
   status()
   statustext()
   substr()
   system()
   time()
   tolower()
   toupper()
   typeof()
   write()
   writeline()
   xname()
   xor()
Metabefehle
   #after
   #array
   #break
   #call
   #config
   #const
   #debug
   #default
   #dict
   #else
   #every
   #forever
   #func
   #if
   #ifregion
   #ifunit
   #include
   #input
   #message
   #next
   #notrace
   #proc
   #return
   #sort
   #table
   #tag
   #trace
   #var
   #while
Rückruf-Prozeduren
   CalcUnitCapacities
   CreateRegionHeader
   CreateUnitHeader
   EndRegion
   EndUnit
   OnBuilding
   OnExit
   OnInit
   OnRegion
   OnShip
   OnUnit
   OutputLineFilter
Report-Objekte
   building
   grenze
   partei
   preise
   races
   region
   report
   ship
   things
   unit
Anhang
   Danksagungen
   SkriptDebugger
   VorlageFAQ

match()

Ausdruck gegen ein Muster vergleichen

Syntax

<int>=match(<txt>,<rexp>)

Beschreibung

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.

Parameter

txt Ausdruck, dessen Textrepresentation mit dem Muster verglichen werden soll.
rexp Regulärer Ausdruck der auf den zu prüfenden Ausdruck angewendet wird.

Beispiel

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'
}

Referenzen

after(), before(), change(), crop(), Reguläre Ausdrücke

Revision 03 Jan 2006

Page design, graphics and contents (c) copyright 1999-2004
by S.Schümann and contributing authors