Expresiones regulares en Delphi

Con Microsoft Excel, también las podemos utilizar, con la Microsoft VBScript Regular Expressions 5.5. Aquí os pongo un pequeño ejemplo de como utilizarlo, aunque hay muchos ejemplos por la red:
Ahora, creamos la función que irá dentro de uno de los módulos del Excel (Acordaros de activar las macros):
Public Function extraerreg(s As String) As String
Dim o_RegExp As RegExp
Dim o_Match As Match
Dim o_Matches As MatchCollection
Set o_RegExp = New RegExp
o_RegExp.IgnoreCase = True
o_RegExp.Global = True
o_RegExp.Pattern = "[^,;\s]+@[^,;\s]+"
Set o_Matches = o_RegExp.Execute(s)
' Recorre en la colección
For Each o_Match In o_Matches
extraerreg = extraerreg + o_Match.Value + " "
Next
End Function
En este caso Delphi aún no lo tiene integrado en su core (esperemos que algún día lo hagan). Pero si que lo he visto en muchos de los componentes de terceros como DevExpress. Por ejemplo el componente TcxMaskEdit, permite realizar la entrada de valores mediante Regular Expressions:
En delphi, hay una librería llamada TRegExpr, de la mano de Andrey V. Sorokin. Podemos descargarla y probarla desde el siguiente enlace: RegExp Studio. Una vez descargada la librería, podemos ver varias demos de la utilización sobre las regular expressions:
procedure TfmTRegExprClassMain.btnExtractEmailsClick(Sender: TObject);
begin
lbxEMailesExtracted.Items.CommaText := ExtractEmails (memExtractEmails.Text);
end;
// This simple function extracts all emails from input string
// and places list of this emails into result string as CSV (comma separated values)
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;
try // ensure memory clean-up
r.Expression := EmailRE;
if r.Exec (AInputString) then
REPEAT
Result := Result + r.Match [0] + ',';
UNTIL not r.ExecNext;
finally r.Free;
end;
end;
Podemos ver como utiliza expresiones regulares para capturar la dirección de correo electrónica. Pues bien, ahora ya podemos extender la librería y empezar a utilizarlas ya que nos ayudan mucho con los patrones de texto.
- Enlaces de interés:
Comprobador de expresiones regulares en javascript. (Ejemplo).
Introducción expresiones regulares.
Expresiones regulares XHTML.
Evaluar expresiones regulares.
Comments
Post a Comment