Quantificateurs

Flash Player 9 et les versions ultérieures, Adobe AIR 1.0 et les versions ultérieures

Vous utilisez des quantificateurs pour spécifier des répétitions de caractères ou de séquences dans des modèles, comme suit :

Caractère de remplacement de quantificateur

Description

* (étoile)

Correspond à l’élément précédent répété zéro ou plusieurs fois.

+ (plus)

Correspond à l’élément précédent répété une ou plusieurs fois.

? (point d’interrogation)

Correspond à l’élément précédent répété zéro ou une fois.

{ n }

{ n ,}

et

{ n , n }

Indique un quantificateur numérique ou une plage de quantificateurs pour l’élément précédent :

/A{27}/ correspond au caractère A répété 27 fois.

/A{3}/ correspond au caractère A répété 3 fois ou plus.

/A{3,5}/ correspond au caractère A répété 3 à 5 fois.

Vous pouvez appliquer un quantificateur à un seul caractère, à une classe de caractère ou à un groupe :

  • /a+/ correspond au caractère a répété une ou plusieurs fois.

  • /\d+/ correspond à un ou plusieurs chiffres.

  • /[abc]+/ correspond à une répétition d’un ou de plusieurs caractères, a , b , ou c .

  • /(very, )*/ correspond au mot very suivi par une virgule et un espace répété zéro ou plusieurs fois.

Vous pouvez utiliser des quantificateurs dans des groupes de parenthèses auxquels sont appliqués des quantificateurs. Par exemple, le quantificateur suivant correspond à des chaînes du type word et word-word-word :

/\w+(-\w+)*/

Par défaut, les expressions régulières effectuent un greedy matching. Tout sous-modèle dans l’expression régulière ( .* , par exemple) tente de mettre en correspondance autant de caractères que possible dans la chaîne avant de passer à la partie suivante de l’expression régulière. Par exemple, considérez l’expression régulière et la chaîne suivantes :

var pattern:RegExp = /<p>.*<\/p>/; 
str:String = "<p>Paragraph 1</p> <p>Paragraph 2</p>";

L’expression régulière correspond à la chaîne entière :

<p>Paragraph 1</p> <p>Paragraph 2</p>

Supposez, néanmoins, que vous souhaitez établir une correspondance avec un seul groupe <p>...</p> . Vous pouvez procéder comme suit :

<p>Paragraph 1</p>

Ajoutez un point d’interrogation ( ? ) après les quantificateurs pour qu’ils deviennent des quantificateurs paresseux . Par exemple, l’expression régulière suivante, qui utilise le quantificateur paresseux *? , correspond à <p> suivi du nombre minimum de caractères possible (paresseux), suivi de </p> :

/<p>.*?<\/p>/

Lisez attentivement les points suivants concernant les quantificateurs :

  • Les quantificateurs {0} et {0,0} n’excluent pas un élément d’une correspondance.

  • Ne combinez pas plusieurs quantificateurs, comme dans /abc+*/ .

  • Le caractère point (.) ne divise pas les lignes en deux à moins de définir l’indicateur s ( dotall ), même s’il est suivi d’un quantificateur * . Considérons par exemple le code qui suit :

    var str:String = "<p>Test\n"; 
    str += "Multiline</p>"; 
    var re:RegExp = /<p>.*<\/p>/; 
    trace(str.match(re)); // null; 
     
    re = /<p>.*<\/p>/s; 
    trace(str.match(re)); 
        // output: <p>Test 
        //                    Multiline</p>

Pour plus d’informations, voir Indicateurs et propriétés .