versión 11
Match regex (motivo; laCadena{; inicio{; pos_encont.{; long_encont.{; *}}}}) Booleano
Parámetro | Tipo | Descripción | |
motivo | Texto | Expresión regular | |
laCadena | Texto | Cadena en la cual se efectúa la búsqueda | |
inicio | Numérico | Posición de laCadena donde comenzar la | |
búsqueda | |||
pos_encont. | Var | Array Ent. Largo | Posición de la ocurrencia | |
long_encont. | Var | Array Ent. Largo | Longitud de la ocurrencia | |
* | * | Si se pasa: buscar únicamente en la posición | |
indicada | |||
Resultado | Booleano | True = la búsqueda ha encontrado una | |
ocurrencia; | |||
De lo contrario, False. |
Descripción
El comando Match regex permite probar la conformidad de una cadena de caracteres con respecto a un conjunto de reglas sintetizadas por medio de un metalenguaje llamado "expresión regular" o "expresión racional." La abreviación regex es comúnmente empleada para indicar esto tipos de notaciones.
Pase en motiv la expresión regular a buscar. Consiste de un conjunto de caracteres utilizado para describir una cadena de caracteres, utilizando caracteres especiales.
Pase en laCadena la cadena en la cual buscar la expresión regular.
Pase en inicio, la posición en laCadena donde debe comenzar la búsqueda.
Si pos_encont.y long_encont son variables, el comando devuelve la posición y la longitud de la ocurrencia en estas variables. Si pasa arrays, el comando devuelve la posición y la longitud de la ocurrencia en el elemento cero de los arrays y las posiciones y longitudes de los grupos capturadas por la expresión regular en los elementos siguientes.
El parámetro opcional * indica, cuando se pasa, que la búsqueda debe llevarse a cabo en la posición especificada por inicio sin buscar más allá en caso de falla.
El comando devuelve True si la búsqueda encuentra una ocurrencia.
Para mayor información sobre regex, consulte la siguiente dirección:
http://en.wikipedia.org/wiki/Regular_expression
Para mayor información sobre la sintaxis de las expresiones regulares pasadas en el parámetro motivo, consulte la siguiente dirección:
http://www.icu-project.org/userguide/regexp.html
Ejemplos
Este comando puede utilizarse de varias maneras, como se ilustra en los siguientes ejemplos:
1. Búsqueda de igualdad completa:
vencont:=Match regex(motivo;mitexto) QUERY BY FORMULA([Empleados];Match regex(".*vargas.*"; [Empleados]apellido))
2. Búsqueda en el texto por posición:
vencont:=Match regex(motivo;mitexto; inicio; pos_encont; long_encont)
Ejemplo para mostrar todas las etiquetas de $1:
inicio:=1 Repeat vencont:=Match regex("<.*>";$1;inicio;pos_encont;long_encont ) If(vencont) ALERT(Substring($1;pos_encont
;long_encont
)) inicio:=pos_encont+long_encont End if Until(Not(vencont))
3. Búsqueda con soporte de "grupos capturados":
vencont:=Match regex( motivo;mitexto; inicio; pos_encont; long_encont_array) ARRAY LONGINT(pos_encont_array;0) ARRAY LONGINT(long_encont_array;0) vencont:=Match regex("(.*)stuff(.*)";$1;1;pos_encont_array; long_encont_array) If(vencont) $grupo1:=Substring($1;pos_encont_array{1};long_encont_array{1}) $grupo2:=Substring($1;pos_encont_array{2};long_encont_array{2}) End if
4. Búsqueda limitando la comparación del motivo a la posición indicada:
Añadir una estrella al final de una de las dos sintaxis anteriores.
vencont:=Match regex("a.b";"---a-b---";1;$pos_encont;$long_encont ) `devuelve True vencont:=Match regex("a.b";"---a-b---";1;$pos_encont;$long_encont ;*) `devuelve False vencont:=Match regex("a.b";"---a-b---";4;$pos_encont;$long_encont ;*) `devuelve True
Nota: Las posiciones y largos devueltos son sólo significativos en modo Unicode o si el texto manipulado es de tipo ASCII 7-bits.
Gestión de errores
En caso de error, el comando genera un error que puede interceptar vía un método instalado por el comando ON ERR CALL.