Dedicado a mis proyectos en Gambas ,un lenguaje de programación parecido al Visual Basic + Java pero ampliamente mejorado y...¡¡para gnu/linux!!.La potencia del gnu/linux sumada a la facilidad del Basic



Consultas, Desarrollo de programas y petición de presupuestos:



Mostrando entradas con la etiqueta regulares. Mostrar todas las entradas
Mostrando entradas con la etiqueta regulares. Mostrar todas las entradas

martes, 23 de diciembre de 2014

Uso de Expresiones Regulares en Gambas

Uso de Expresiones Regulares en Gambas

¿que son expresiones regulares?
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 los lenguajes regulares (finitos o infinitos) y se construye utilizando caracteres del alfabeto 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", la direcció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) As String

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)