Expresiones Regulares, GeneXus 16


Una expresión regular (ER) es un patrón que se utiliza para encontrar una combinación especifica de caracteres dentro de una cadena de texto. Con las expresiones regulares podemos de una manera muy flexible buscar o reconocer cadenas de texto. En GeneXus existen varias funciones que nos permiten trabajar con las expresiones regulares:

IsMatch: Se utiliza para comprobar que la cadena de texto coincida con la ER.
ReplaceRegEx: Se utiliza para reemplazar el texto que coincida con la ER.
SplitRegEx: Se utiliza para dividir una cadena de texto utilizando la ER como patrón.


Ejemplos con IsMatch:

Validar que un mail sea correcto:
&Pattern = "\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"

If (&UserEmail.IsMatch(&Pattern))
        //Mail valido
Else
        //Mail no valido
Endif

Validar que sólo se use, números, letras y guiones bajos:
&Pattern = "^[\w]*$"

If (&NombrePrograma.IsMatch(&Pattern))
        //Valido
Else
        //No valido
Endif

Validar que sea una IP correcta:
&Pattern = "\b(?i:https?|ftp)(://([\w.]+(:\d{1,4})?)(/[\w+&@#/%=~_!:,.;]*))?(\?[\w+&@#/%=~_|!:,.;]*)?"

If (&DireccionIp.IsMatch(&Pattern))
        //Ip valida
Else
        //Ip no valida
Endif


Ejemplos con ReplaceRegEx:

Reemplazar los saltos de línea por un espacio en una cadena de texto:
&Texto = "Hola Mundo, 
                  estoy desarrollando
                  en GeneXus"
&Texto = &Texto.ReplaceRegEx("/\r\n+|\r+|\n+|\t+/i", " ")

Ahora la variable Texto contendrá "Hola Mundo, estoy desarrollando en GeneXus"


Reemplazar varios espacios por uno solo:
&Texto = "Hola         Mundo,      estoy           desarrollando     en     GeneXus"
&Texto = &Texto.ReplaceRegEx("\s+", " ")

Ahora la variable Texto contendrá "Hola Mundo, estoy desarrollando en GeneXus"


Ejemplos con SplitRegEx: 
Esta función de GeneXus retorna una colección de Strings, normalmente lo retornado se guarda en un vector.

Separar una cadena de texto cada vez que se encuentre un espacio en blanco:
&Texto = "Hola Mundo, estoy desarrollando en GeneXus"
&Vector = &Texto.SplitRegEx('\s')
//Entonces, Vector(1) = "Hola", Vector(2)="Mundo,", Vector(3)="estoy", etc...
//Para recorrer las posiciones se puede usar:
For &VectorItem in &Vector
        //Código
Endfor



Comentarios