Expressions rationnelles

Un expression rationnelle est une façon formelle de décrire un texte. Par exemple, le texte « 32 » peut être décrit comme un texte contenant deux chiffres. Cependant, d'autres textes contiennent également deux chiffres, comme « 12 » et « 00 » et peuvent donc être décrits comme un texte contenant deux chiffres. Nous pouvons l'exprimer par l'expression rationnelle \d\d qui est une façon formelle d'exprimer qu'un texte doit contenir deux et seulement deux chiffres (\d est le symbole d'un chiffre). Nous disons que ces textes correspondent à cette expression rationnelle. Les expressions rationnelles Design Studio suivent la syntaxe Perl5.

Une expression rationnelle est composée de caractères normaux et de symboles spéciaux. Chaque symbole spécial a sa propre signification. Par exemple, le symbole spécial « . » (point) signifie tout caractère unique et correspond à tous les caractères uniques, tels que "a", "b", "1", "2", ...

Le tableau ci-dessous donne un aperçu des symboles spéciaux les plus couramment utilisés.

Symbole spécial

Description

.

Tout caractère unique, tel que "a", "1", "/", " ?", ".", etc.

\d

Tout chiffre décimal, tel que "0", "1", ..., "9".

\D

Tout caractère ne correspondant pas à un chiffre, identique à "." à exception de "0", "1", ..., "9".

\s

Tout caractère espace blanc, tel que " " et saut de ligne.

\S

Tout caractère espace non blanc, c'est-à-dire identique à ".", mais à l'exclusion des espaces blancs (comme "." et le saut de ligne).

\w

Tout caractère (alphanumérique) mot, tel que "a", ..., "z", "A", ..., "Z", "0", ..., "9".

\W

Tout caractère non-mot (alphanumérique), c'est-à-dire identique à ".", mais à l'exclusion de "a", ..., "z", "A", ..., "Z", "0", ..., "9".

Exemples

  • L'expression rationnelle ".an" correspond à toutes les longueurs de texte trois se terminant par "an", comme "can" et "man", mais pas "mcan".

  • L'expression rationnelle "\d\d\s\d\d" correspond à toutes les longueurs de texte cinq commençant par deux chiffres suivis d'un espace blanc et se terminant par deux chiffres, tels que "01 23" et "72 13", mais pas "01 2s".

  • Si vous voulez qu'un caractère spécial, tel que « . » ou « \ » soit un caractère normal, vous pouvez l'échapper en ajoutant une barre oblique inverse (« \ ») devant lui. Si vous souhaitez faire correspondre exactement le caractère ".", au lieu d'un seul caractère, vous devez écrire "\.".

    Par exemple, l'expression rationnelle "m\.n\\o" correspond uniquement au texte "m.n\o".

  • Vous pouvez organiser une expression rationnelle en sous-expressions rationnelles à l'aide de parenthèses : "(" et ")".

    Par exemple, l'expression rationnelle "abc" peut être organisée sous la forme "(a) (bc)".

  • Tous les caractères uniques sont considérés comme des sous-expressions rationnelles.

    Par exemple, dans l'expression rationnelle "abc", chaque caractère "a", "b" et "c" est considéré comme une sous-expression rationnelle.

Les sous-expressions rationnelles sont utiles lors de l'application des opérateurs d'expression rationnelle. Le tableau suivant donne un aperçu des opérateurs d'expressions rationnelles disponibles.

Opérateur

Description

?

Correspond à la sous-expression rationnelle ou au texte vide.

*

Correspond à n'importe quel nombre de répétitions de la sous-expression rationnelle précédente, ou à du texte vide.

+

Correspond à une ou plusieurs répétitions de la sous-expression rationnelle précédente.

{m}

Correspond exactement à m répétitions de la sous-expression rationnelle précédente.

{m,n}

Correspond entre m et n répétitions (incluses) de la sous-expression rationnelle précédente.

{m,}

Correspond à m répétitions ou plus de la sous-expression rationnelle précédente.

a|b

Correspond à ce que l'expression a correspondrait ou à ce que l'expression b correspondrait.

Exemples

  • ".*" correspond à n'importe quel texte, tel que "Design Studio", "1213" et "" (le texte vide)

  • "(abc)*" correspond à n'importe quel nombre de répétitions du texte "abc", tel que "", "abc", "abcabc" et "abcabcabc", mais pas "abca"

  • "(\d\d){1,2}" correspond à deux ou quatre chiffres, tels que "12" et "6789", mais pas "123"

  • "(good)?bye" correspond à "goodbye" et "bye"

  • "(good)|(bye)" correspond à "good" et "bye"

Comme pour les autres caractères spéciaux, vous pouvez échapper les caractères spéciaux qui apparaissent dans les opérateurs d'expression rationnelle en ajoutant une barre oblique inverse ("\") devant le caractère.

Les sous-expressions rationnelles sont utiles lorsque vous souhaitez extraire des morceaux de texte spécifiques d'un texte. Lorsque vous créez une sous-expression rationnelle en utilisant des parenthèses, vous pouvez extraire la partie du texte qui correspond à la sous-expression rationnelle. Supposons l'expression rationnelle "abc (.*) def (.*) ghi". Cette expression rationnelle comporte deux sous-expressions rationnelles qui sont faites en utilisant des parenthèses. Si l'expression rationnelle est comparée au texte "abc 123 def 456 ghi", la première de ces sous-expressions rationnelles correspondra au texte "123", et la seconde sous-expression rationnelle, au texte "456". Dans une expression (voir Expressions), vous pouvez faire référence à ces correspondances de sous-expression rationnelle en écrivant "1" et "2". Par exemple, l'expression "X" + 1 $ + "Y" + 2 $ + "Z" donner le résultat "X123Y456Z". Il s'agit d'une technique d'extraction très importante dans Design Studio, qui est décrite dans la section « Experimenter avec les expressions ».

Par défaut, les opérateurs d'expression rationnelle de répétition (*, +, {...}) correspondent au plus grand nombre possible de répétitions de l'expression rationnelle précédente. Vous pouvez placer un "?" après l'opérateur pour le convertir en opérateur qui correspond à un nombre de répétitions aussi faible que possible. Supposons l'expression rationnelle ".*(\d\d\d\d).*". Si l'expression rationnelle est comparée au texte "abc 123 def 456 ghi", la sous-expression rationnelle "(\d\d\d\d)" correspondra au deuxième chiffre du texte ("456"), car le premier *-opérator correspondra à autant de répétitions que possible. Si vous placez un "?" après *-operator, de sorte que l'expression rationnelle devient ".*?(\d\d\d).*", la sous-expression rationnelle "(\d\d\d)" correspondra au premier nombre du texte ("123 "), car *?-operator correspondra au moins de répétitions possible.

Nous vous recommandons d'expérimenter avec vos propres expressions rationnelles. La meilleure façon de procéder est de lancer Design Studio et de trouver un endroit où vous pouvez entrer une expression rationnelle, comme dans l'activité Tester la balise. Ensuite, cliquez sur le bouton Modifier à droite du champ de l'expression rationnelle pour ouvrir la fenêtre de l'éditeur d'expression rationnelle.

Dans l'éditeur d'expression rationnelle, vous pouvez entrer une expression rationnelle et vérifier si elle correspond au texte d'entrée de test dans le panneau de Entrée. Lorsque vous ouvrez la fenêtre, Design Studio définit généralement comme texte d'entrée de test le texte auquel l'expression rationnelle est comparée si l'étape donnée est exécutée dans l'état actuel du robot d'entrée. Cependant, vous pouvez également modifier vous-même le texte d'entrée de test, pour essayer l'expression rationnelle sur d'autres entrées. Pour tester l'expression rationnelle, cliquez sur le bouton Tester. Le résultat de la correspondance apparaît dans le panneau Données de sortie.

Le bouton Symbole dans l'éditeur d'expression rationnelle est très utile lorsque vous voulez entrer un symbole spécial dans l'expression rationnelle. Lorsque vous cliquez dessus, un menu s'affiche, dans lequel vous pouvez sélectionner le symbole à insérer dans l'expression rationnelle. De cette façon, vous n'avez pas à mémoriser tous les symboles spéciaux et leur signification.

Pour en savoir plus sur les symboles et les expressions rationnelles spéciaux disponibles, consultez Expressions rationnelles.