Saltar al contenido principal
Workday User Guide
Última actualización: 2023-06-23
Grupos de captura de expresión regular

Grupos de captura de expresión regular

Puede usar un par de paréntesis alrededor de un subpatrón en una expresión regular para definir un
grupo
. Puede usar grupos de expresiones regulares para:
  • Aplique operadores y cuantificadores de expresiones regulares a todo un grupo a la vez.
  • Cree un grupo de captura.
    Puede usar grupos de captura para especificar valores coincidentes para guardar o devolver de su expresión regular. Por defecto, un grupo
    captura
    el texto que genera una coincidencia. La parte de la cadena que coincide con la subexpresión agrupada se captura en la memoria para su posterior recuperación o uso.
  • Cree un grupo sin captura.

Numeración de grupo

Una expresión regular puede tener más de un grupo y los grupos pueden estar anidados. Los grupos se numeran del 1 al
n
de izquierda a derecha, comenzando por el primer paréntesis de apertura. Siempre hay un grupo implícito cero (0), que contiene la coincidencia completa. Ejemplo:
(a(b*))+(c)
Este patrón contiene tres grupos:
group 1: (a(b*)) group 2: (b*) group 3: (c)

Captura de grupos y la función REGEX

Puede utilizar el
REGEX
para extraer una parte de una cadena. El
REGEX
La función solo devuelve el valor del
primer
grupo de captura.
Supongamos que tiene un nombre de campo llamado
correo electrónico
que contiene direcciones de correo electrónico con este patrón:
nombredeusuario
@
proveedor
.
dominio
. Puede utilizar el
REGEX
para devolver solo la parte
del proveedor
de la dirección de correo electrónico del campo
de correo electrónico
:
REGEX([email],"^[a-zA-Z0-9._%+-]+@
([a-zA-Z0-9._-]+)
\.[a-zA-Z]{2,4}$")

Captura de grupos y función REGEX_REPLACE

Puede utilizar el
REGEX_REPLACE
para que coincida con una cadena y sustituya las cadenas coincidentes por otro valor. El
REGEX_REPLACE
La función toma 3 argumentos:
  • Cadena de entrada
  • Expresión regular coincidente
  • Expresión regular de sustitución
Puede utilizar grupos de captura para capturar referencias retroactivas, pero siempre se devuelve la coincidencia completa.

Captura de grupos y referencias retroactivas

Puede utilizar una referencia retroactiva para volver a hacer referencia al contenido coincidente de un número de grupo de captura en particular. Normalmente, se utiliza una referencia inversa en la misma expresión regular que contiene el grupo de captura. Para especificar una referencia inversa, haga referencia al número de grupo precedido por una barra diagonal inversa. Utilizar
\1
para hacer referencia al grupo de captura 1,
\2
para hacer referencia al grupo de captura 2, y así sucesivamente.
Supongamos que desea cotejar un par de etiquetas HTML y su texto adjunto. Puede capturar la etiqueta de apertura en un grupo de captura y, a continuación, utilizar una referencia inversa para que coincida con la etiqueta de cierre correspondiente:
(
<
([A-Z][A-Z0-9]*)
\b[^>]*>.*?</
\2
>
)
Esta expresión regular contiene dos grupos de captura:
  • El grupo 1 contiene los paréntesis más externos y captura la cadena completa.
  • El grupo 2 captura la cadena que coincide con
    [A-Z][A-Z0-9]*
    .
A continuación, puede hacer referencia al grupo 2 mediante el
\2
backreference para que coincida con la etiqueta HTML de cierre correspondiente.
Cuando utiliza el
REGEX_REPLACE
puede usar una referencia inversa para hacer referencia a un grupo de captura en la expresión regular
anterior
. La sintaxis es ligeramente diferente cuando se utiliza una referencia inversa para hacer referencia a un grupo en la expresión regular anterior. Utilice un signo de dólar (
$
) antes del número de grupo, como
$1
para especificar una referencia inversa al grupo 1 de la expresión anterior.
Supongamos que tiene un campo
phone_number
donde los valores tienen el formato
xxx.xxx.xxxx
. El siguiente ejemplo coincide con los valores de
phone_number
y los sustituye por valores con el formato
(xxx) xxx-xxxx
:
REGEX_REPLACE([phone_number],"([0-9]{3})\.([[0-9]]{3})\.([[0-9]]{4})","
\($1\) $2-$3
")
Fíjese en las referencias anteriores en la expresión de sustitución. Hacen referencia a los grupos de captura de la expresión coincidente anterior.

Grupos sin captura

En algunos casos, es posible que desee utilizar paréntesis para agrupar subpatrones, pero
no
capturar texto. Un grupo sin captura comienza con
(?:
(un signo de interrogación y dos puntos después del paréntesis de apertura). Por ejemplo,
h(?:a|i|o)t
coincidencias
hat
o
hit
o
hot
, pero no captura el
a
,
i
, o
o
de la subexpresión.