This is very old and outdated translation. If you can read English or Russian please use up-to-date English version or Russian version.

If you want to help to update the translation please contact me. New translation is based on GetText and can be edited with transifex.com. It is already machine-translated and need only proof-reading and may be some copy-pasting from here.


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

{% highlight pascal linenos %} // 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-Zd-.]+@[_a-zA-Zd-]+(.[_a-zA-Zd-]+)+” 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. {% endhighlight %}   {% highlight pascal linenos %} // Este ejemplo extrae números de teléfono // y los descompone en partes (códigos de Ciudad y país, númerotelefó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. {% endhighlight %}

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.