Una expresión regular, a menudo llamada también regex, es una secuencia de caracteres que forma un patrón de búsqueda, principalmente utilizada para la búsqueda de patrones de cadenas de caracteres u operaciones de sustituciones. Por ejemplo, el grupo formado por las cadenas Handel, Händel y Haendel se describe con el patrón "H(a|ä|ae)ndel". La mayoría de las formalizaciones proporcionan los siguientes constructores: una expresión regular es una forma de representar a loslenguajes regulares (finitos o infinitos) y se construye utilizando caracteres delalfabeto sobre el cual se define el lenguaje.
Para usar las expresiones regulares, tenemos el componente gb.pcre, que hay que activarlo en el menu Proyecto/Propiedades/Componentes:
también en la documentación podemos ver la sintaxis de los patrones que se pueden usar: http://gambaswiki.org/wiki/doc/pcre
Ejemplo:
Este ejemplo extrae de la frase "From pepito.perez@aqui.com Sat Jan 5 09:14:16 2008", ladirección electrónica, la hora, y el dominio del correo electrónico.
' Gambas class file
Public Sub _new()
End
Public Sub Form_Open()
Print ResultadoER("From pepito.perez@aqui.com Sat Jan 5 09:14:16 2008","(\\S+@\\S+)")
Print ResultadoER("From pepito.perez@aqui.com Sat Jan 5 09:14:16 2008","([0-9][0-9]):([0-9][0-9]):([0-9][0-9])")
Print ResultadoER("From pepito.perez@aqui.com Sat Jan 5 09:14:16 2008","@([^ ]*)")
End
Public Function ResultadoER(cadena As String, expresion As String) AsString
Dim re As RegExp
re = New RegExp(cadena, expresion)
If re.Count = 1 Then
Return re.Text
Else
If re.count <> 0 Then
Return re[0].text
Else
Return ("No devuelve resultado")
Endif
Endif
End
Ejecutando el programa nos devuelve:
pepito.perez@aqui.com
09:14:16
@aqui.com
Depurando el programa: Viendo los valores de re[], en modo depuración usando un punto de interrupción |
Para saber más:
http://www.regexr.com/
Nota:
Para usar expresiones regulares simples también tenemos la orden Scan y like
Descarga del ejemplo: alojado en google drive
Fuente:
http://www.gambas-es.org/viewtopic.php?t=4307&p=24480#p24480 (Shell)
No hay comentarios:
Publicar un comentario