RegExp Studio
TRegExpr v.0.947 - Delphi Expresiones Regulares

Bulgarian
English
French
German
Russian
Spanish
About TRegExpr Acerca de Installation Instalación Regular Expressions Syntax Sintaxis TRegExpr Interface Interface FAQ FAQ TRegExpr usage demos Demos Author 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
 
ExecRegExpr ('\d{3}-(\d{2}-\d{2}|\d{4})''Teléfono: 555-1234');  
devuelve True

ExecRegExpr ('^\d{3}-(\d{2}-\d{2}|\d{4})''Teléfono: 555-1234');  
devuelve False, porque hay algunos símbolos antes del número de teléfono y estamos usando el metasímbolo '^' (BeginningOfLine = Inicio de línea)

ReplaceRegExpr ('producto''Pruebe producto. producto es el mejor !''TRegExpr');  
devuelve 'Pruebe TRegExpr. TRegExpr es el mejor !'; ;)

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.



© 2004 Andrey V. Sorokin, Saint Petersburg, Russia
anso@mail.ru
RegExpStudio.com

Help&Manual - the best help authoring tool!