| Bulgarian English French German
RussianSpanish |
| About | Installation | Syntax | Interface | FAQ | Demos | Author |
|
Wie funktioniert's?
Einfache Beispiele Falls Du nicht mit Regulären Ausdrücken bekannt bist, dann könntest Du etwas unter dem Abschnitt Syntax dazulernen oder schaue in ein gutes Perl oder Unix Buch. Globale Routinen verwenden Das ist zwar einfach, aber nicht besonders flexibel oder effektiv.
Die TRegExpr-Klasse verwenden Damit hast Du alle Möglichkeiten der Bibliothek zur Verfügung. // Diese einfache Funktion extrahiert alle E-Mail-Adressen aus dem InputString // und legt eine Liste dieser Adressen in den Rückgabewert function ExtractEmails (const AInputString : string) : string; const EmailRE = '[_a-zA-Z\d\-\.]+@[_a-zA-Z\d\-]+(\.[_a-zA-Z\d\-]+)+' var r : TRegExpr; begin Result := ''; r := TRegExpr.Create; // Erzeuge Objekt try // garantiere Speicherfreigabe r.Expression := EmailRE; // der R.A. wird automatisch in die interne Struktur übersetzt // innerhalb der Zuweisung an diese Eigenschaft if r.Exec (AInputString) then REPEAT Result := Result + r.Match [0] + ', '; UNTIL not r.ExecNext; finally r.Free; end; end; begin ExctractEmails ('My e-mails is anso@mail.ru and anso@usa.net'); // gibt zurück: 'anso@mail.ru, anso@usa.net, ' end. (* Beachte: Die Übersetzung eines Regulären Ausdruckes beansprucht etwas Zeit während der Zuweisung. Wenn Du also diese Funktion öfters ausführst, dann erzeugst Du damit unnötigen Aufwand. Wenn der Reguläre Ausdruck also konstant bleibt, dann kannst Du dies beträchtlich optimieren, indem Du diese Zuweisung nur während der Initialisierungsphase Deines Projektes ausführst. *) // Dieses einfache Beispie extrahiert Telefonnummern und // zerlegt sie in Teile (Stadt- und Landesvorwahl, interne Nummer). // Danach ersetzt es diese Teile im Template. function ParsePhone (const AInputString, ATemplate : string) : string; const IntPhoneRE = '(\+\d *)?(\(\d+\) *)?\d+(-\d*)*'; var r : TRegExpr; begin r := TRegExpr.Create; try r.Expression := IntPhoneRE; if r.Exec (AInputString) then Result := r.Substitute (ATemplate) else Result := ''; finally r.Free; end; end; begin ParsePhone ('Phone of AlkorSoft (project PayCash) is +7(812) 329-44-69', 'Zone code $1, city code $2. Whole phone number is $&.'); // Rückgabe: 'Zone code +7, city code (812) . Whole phone number is +7(812) 329-44-69.' end. Etwas komplexere Beispiele Du findest komplexere Beispiele für den Gebrauch von TRegExpr in den Projekten TestRExp.dpr und HyperLinkDecorator.pas. Beachte bitte auch meine kleinen Artikel auf Delphi3000.com (Englisch) und Delphi Kingdom (Russisch). Ausführliche Erklärung Bitte beachte dazu die TRegExpr-Interface-Beschreibung. |
![]() |