blob: c8f89105f1edb29b68e320d5cc3a2ef80feec437 [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001SYNOPSIS
Zesstrad59c3892019-11-28 20:53:39 +01002 string * regexp(string *list, string pattern)
MG Mud User88f12472016-06-24 23:31:02 +02003
Zesstrad59c3892019-11-28 20:53:39 +01004BESCHREIBUNG
5 Liefert ein neues Array mit all jenen Strings aus list zurueck,
6 welche auf das Muster pattern passen. Diese Funktion verwendet
7 dieselbe Syntax fuer regulaere Ausdruecke wie ed():
MG Mud User88f12472016-06-24 23:31:02 +02008
Zesstrad59c3892019-11-28 20:53:39 +01009 . Passt auf jedes beliebige Zeichen.
MG Mud User88f12472016-06-24 23:31:02 +020010
Zesstrad59c3892019-11-28 20:53:39 +010011 ^ Passt auf den Beginn einer Zeichenkette.
MG Mud User88f12472016-06-24 23:31:02 +020012
Zesstrad59c3892019-11-28 20:53:39 +010013 $ Passt auf das Ende einer Zeichenkette.
14
15 \< Passt auf das Beginn eines Wortes.
16
17 \> Passt auf das Ende eines Wortes.
18
19 \B Passt auf eine leere Zeichenkette an einem Wortrand
20 (sollte aehnlich wie das Symbol zur Emacs-Kompatibilitaet in
21 GNU egrep sein), seit 3.2@249
22
23 x|y Passt entweder auf den regulaeren Ausdruck x oder y.
24
25 () Verwendet den eingeschlossenen regulaeren Ausdruck wie einen
26 'simplen' Ausdruck.
27
28 x* Der regulaere Ausdruck x passt beliebig oft (0 oder mehr).
29
30 x+ Der regulaere Ausdruck x passt mindestens einmal (1 oder mehr).
31
32 [..] Passt auf jedes in den Klammern eingeschlossenes Zeichen.
33
34 [^ ..] Passt auf jedes Zeichen, welches nicht in den Klammern
35 eingeschlossen ist. Das .. ist durch einzelne Zeichen oder
36 Bereiche von Zeichen zu ersten:
37 [abc] Passt auf a, b oder c.
38 [ab0-9] Passt auf a, b, c oder eine beliebige Ziffer.
39 [^a-z] Passt auf keinen klein geschriebenen Buchstaben.
40
41 \c Passt auf das Zeichen c, selbst wenn es eines der Sonderzeichen ist.
42
43 Wenn es einen Fehler im regulaeren Ausdruck gibt, wird ein
44 Laufzeitfehler ausgeloest.
45
46BEISPIELE
MG Mud User88f12472016-06-24 23:31:02 +020047 string strs;
Zesstrad59c3892019-11-28 20:53:39 +010048 if (strs = regexp(({ "Bitte helfen sie mir, Sir John." }),
49 "\\<helfen\\>.*\\<mir\\>")) {
MG Mud User88f12472016-06-24 23:31:02 +020050 if (sizeof(strs)
Zesstrad59c3892019-11-28 20:53:39 +010051 write("Es passt.\n");
MG Mud User88f12472016-06-24 23:31:02 +020052 }
53
Zesstrad59c3892019-11-28 20:53:39 +010054 Der regulaere Ausdruck wird den uebergebenen String (welcher in
55 einem Array verpackt wurde) daraufhin ueberpruefen, ob
56 sowas wie "helfen ... mir" darin vorkommt.
MG Mud User88f12472016-06-24 23:31:02 +020057
Zesstrad59c3892019-11-28 20:53:39 +010058GESCHICHTE
59 LDMud 3.2.9 fuegte das Sonderzeichen '+' hinzu.
MG Mud User88f12472016-06-24 23:31:02 +020060
Zesstrad59c3892019-11-28 20:53:39 +010061SIEHE AUCH
62 regexplode(E), regreplace(E), sscanf(E)