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)