Passer au contenu principal
Workday User Guide
Dernière mise à jour : 2023-06-23
Groupes de saisie d'expressions rationnelles

Groupes de saisie d'expressions rationnelles

Vous pouvez utiliser une paire de parenthèses autour d'un sous-modèle dans une expression rationnelle pour définir un
groupe
. Vous pouvez utiliser des groupes d'expressions rationnelles pour :
  • Permet d'appliquer à un groupe entier les opérateurs regex et les quantificateurs à la fois.
  • Créez un groupe de saisie.
    Vous pouvez utiliser des groupes de saisie pour préciser des valeurs correspondantes à enregistrer ou à renvoyer à partir de votre expression rationnelle. Par défaut, un groupe
    saisit
    le texte qui génère une correspondance. La partie de la chaîne qui correspond à la sous-expression groupée est entrée dans la mémoire pour pouvoir être récupérée ou utilisée ultérieurement.
  • Créez un groupe non saisissable.

Numérotation des groupes

Une expression rationnelle peut avoir plusieurs groupes et les groupes peuvent être imbriqués. Les groupes sont numérotés 1-
n
de gauche à droite, en commençant par la première parenthèse ouvrante. Il existe toujours un groupe zéro (0) implicite qui contient la correspondance complète. Exemple :
(a(b*))+(c)
Ce modèle contient trois groupes :
group 1: (a(b*)) group 2: (b*) group 3: (c)

Groupes saisis et fonction REGEX

Vous pouvez utiliser le
REGEX
pour extraire une partie d'une chaîne. La
REGEX
La fonction renvoie uniquement la valeur du
premier
groupe de saisie.
Supposons que vous ayez un nom de champ appelé
courriel
qui contient des adresses de courriel ayant le modèle suivant :
nom d’utilisateur
@
fournisseur
.
domaine
. Vous pouvez utiliser le
REGEX
pour renvoyer uniquement la partie
du fournisseur
de l'adresse de courriel provenant du champ
de courriel
:
REGEX([email],"^[a-zA-Z0-9._%+-]+@
([a-zA-Z0-9._-]+)
\.[a-zA-Z]{2,4}$")

Groupes saisis et fonction REGEX_REPLACE

Vous pouvez utiliser le
REGEX_REPLACE
pour mettre en correspondance une chaîne et remplacer les chaînes correspondantes par une autre valeur. La
REGEX_REPLACE
prend 3 arguments pour la fonction :
  • Chaîne d'entrée
  • Expression rationnelle de correspondance
  • Expression rationnelle de remplacement
Vous pouvez utiliser des groupes de saisie pour saisir des références antérieures, mais la correspondance complète est toujours retournée.

Groupes de saisie et références antérieures

Vous pouvez utiliser une référence antérieure pour faire référence au contenu correspondant d’un numéro de groupe de saisie particulier. En règle générale, vous utilisez une référence antérieure dans la même expression rationnelle qui contient le groupe de saisie. Vous précisez une référence antérieure en faisant référence au numéro de groupe précédé d’une barre oblique inverse. Utiliser
\1
pour faire référence au groupe de saisie 1,
\2
pour faire référence au groupe de saisie 2, etc.
Supposons que vous souhaitez mettre en correspondance une paire de marqueurs HTML et leur texte inclus. Vous pouvez saisir le marqueur d’ouverture dans un groupe de saisie, puis utiliser une référence rétroactive pour le faire correspondre au marqueur de fermeture correspondant :
(
<
([A-Z][A-Z0-9]*)
\b[^>]*>.*?</
\2
>
)
Cette expression rationnelle contient deux groupes de saisie :
  • Le groupe 1 contient les parenthèses externes et saisit la chaîne entière.
  • Le groupe 2 contient la chaîne correspondante à
    [A-Z][A-Z0-9]*
    .
Vous pouvez ensuite faire référence au groupe 2 en utilisant le
\2
la référence antérieure pour qu'elles correspondent au marqueur HTML de fermeture correspondant.
Lorsque vous utilisez le
REGEX_REPLACE
, vous pouvez utiliser une référence antérieure pour faire référence à un groupe de saisie dans l’expression rationnelle
précédente
. La syntaxe est légèrement différente lorsque vous utilisez une référence antérieure pour faire référence à un groupe dans l’expression rationnelle précédente. Utilisez un signe dollar (
$
) avant le numéro de groupe, comme
$1
pour préciser une référence rétroactive au groupe 1 de l’expression précédente.
Supposons que vous ayez un champ
Phone_number
où les valeurs sont mises en forme comme suit
xxx.xxx.xxxx
. L'exemple suivant met en correspondance les valeurs de
téléphone_number
et les remplace par des valeurs au format suivant :
(xxx) xxx-xxxx
:
REGEX_REPLACE([phone_number],"([0-9]{3})\.([[0-9]]{3})\.([[0-9]]{4})","
\($1\) $2-$3
")
Notez les références postérieures dans l’expression de remplacement. Ils se rapportent aux groupes de saisie de l’expression de mise en correspondance précédente.

Groupes sans saisie

Dans certains cas, vous souhaiterez peut-être utiliser des parenthèses pour regrouper des sous-modèles, mais
pas
pour saisir du texte. Un groupe non saisissable commence par
(?:
(un point d’interrogation et deux points après la parenthèse ouvrante). Par exemple,
h(?:a|i|o)t
correspondances
hat
ou
hit
ou
hot
, mais ne saisit pas les éléments suivants :
a
,
i
, ou
o
à partir de la sous-expression.