| Bulgarian English French German Russian Spanish
|
| Acerca de | Instalación | Sintaxis | Interface | FAQ | Demos | Autor |
|
Cómo funciona
Ejemplos simples Si no tiene experiencia con las expresiones regulares, por favor vea la sección sintaxis. Usando las rutinas globales Es simple pero poco flexible y efectivo
Usando la clase TRegExpr Se obtiene todo el poder de la librería // Esta simple función extrae todas las direcciones de email de la cadena ingresada // y devuelve una lista de estos email en el resultado function ExtraeEmails (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; // Crea el objeto try // asegura la liberación de memoria r.Expression := EmailRE; // La e.r. se compila automáticamente en estructuras internas // cuando se asigna la propiedad Expression if r.Exec (AInputString) then REPEAT Result := Result + r.Match [0] + ', '; UNTIL not r.ExecNext; finally r.Free; end; end; begin ExtraeEmails ('Mis e-mails son anso@mail.ru y anso@usa.net'); // devuelve 'anso@mail.ru, anso@usa.net, ' end. // Nota: la compilación de la r.e. realizada al asignar ;a propiedad Expression // toma cierto tiempo, si se usa esta función muchas veces // se sobrecarga inútilmente. // Esto se puede optimizar significativamente creando el objeto TRegExpr // y precompilando la expresión durante la inicialización del programa. // Este ejemplo extrae números de teléfono // y los descompone en partes (códigos de Ciudad y país, número telefónico ). // Después substituye estas partes en la máscara ingresada. function ParseTel (const AInputString, ATemplate : string) : string; const IntPhoneRE = '(\+\d *)?(\(\d+\) *)?\d+(-\d*)*'; var r : TRegExpr; begin r := TRegExpr.Create; // Crea el objeto try // asegura la liberación de memoria r.Expression := IntPhoneRE; // La e.r. se compila automáticamente en estructuras internas // cuando se asigna la propiedad Expression if r.Exec (AInputString) then Result := r.Substitute (ATemplate) else Result := ''; finally r.Free; end; end; begin ParseTel ('El teléfono de AlkorSoft (proyecto PayCash) es +7(812) 329-44-69', 'Código de País $1, código de ciudad $2. El número telefónico completo es $&.'); // devuelve 'Código de País +7, código de ciudad (812) . El número telefónico completo es +7(812) 329-44-69.' end. Ejemplos más complejos Se pueden encontrar ejemplos más complejos del uso de TRegExpr en el proyecto TestRExp.dpr y HyperLinkDecorator.pas. Ver también mis artículos en Delphi3000.com (Inglés) y Delphi Kingdom (Ruso). Explicación detallada Por favor, ver la descripcion de la interface de TRegExpr. |
![]() |