4D v16.3

Match regex

Inicio

 
4D v16.3
Match regex

Match regex 


 

Match regex ( patron ; laCadena ; inicio {; pos_encont. ; long_encont.}{; *} ) -> Resultado 
Parámetro Tipo   Descripción
patron  Texto in Expresión regular
laCadena  Texto in Cadena en la cual se efectúa la búsqueda
inicio  Entero largo in Posición de laCadena donde comenzar la búsqueda
pos_encont.  Array entero largo, Variable entero largo in Posición de la ocurrencia
long_encont.  Array entero largo, Variable entero largo in Longitud de la ocurrencia
Operador in Si se pasa: buscar únicamente en la posición indicada
Resultado  Booleano in True = la búsqueda ha encontrado una ocurrencia; De lo contrario, False.
Match regex ( patron ; laCadena ) -> Resultado 
Parámetro Tipo   Descripción
patron  Texto in Expresión regular (igualdad completa)
laCadena  Texto in Cadena en la cual se efectúa la búsqueda
Resultado  Booleano in True= la cadena encuentra una ocurrencia, de lo contrario False

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 patrón 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 patrón, consulte la siguiente dirección:
http://www.icu-project.org/userguide/regexp.html

Búsqueda de igualdad completa (sintaxis simple):

vencontrado:=Match regex(plantilla;mitexto)

 QUERY BY FORMULA([Empleados];Match regex(".*smith.*";[Empleados]nombre))

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;</Gen9><span class="rte4d_prm">pos_encont</span><Gen9>;</Gen9><span class="rte4d_prm">long_encont</span><Gen9>))
       inicio:=pos_encont+long_encont
    End if
 Until(Not(vencont))

Búsqueda con soporte de “grupos capturados” vía paréntesis. ( ) se utilizan para especificar grupos en los regex:
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

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 significativosn sólo en modo Unicode o si el texto manipulado es de tipo ASCII 7-bits.

En caso de error, el comando genera un error que puede interceptar vía un método instalado por el comando ON ERR CALL.

 
PROPIEDADES 

Producto: 4D
Tema: Cadenas de caracteres
Número 1019

Este comando modifica la variable sistema ErrorThis command can be run in preemptive processesEl modo Unicode afecta este comando

 
HISTORIA 

Creado por: 4D v11 SQL

 
ARTICLE USAGE

Manual de lenguaje 4D ( 4D v16)
Manual de lenguaje 4D ( 4D v16.1)
Manual de lenguaje 4D ( 4D v16.2)
Manual de lenguaje 4D ( 4D v16.3)