<Précédent | Table des matières | Suivant>
{ } - Faire correspondre un élément un certain nombre de fois
Le { et les } les métacaractères sont utilisés pour exprimer les nombres minimum et maximum de correspondances requises. Ils peuvent être spécifiés de quatre manières possibles :
Tableau 19-3 : Spécification du nombre de correspondances
Spécificateur Signification
Spécificateur Signification
{n} Faire correspondre l'élément précédent s'il se produit exactement n fois.
{n,m} Faire correspondre l'élément précédent s'il apparaît au moins n fois, mais pas plus de m fois.
{n,} Faire correspondre l'élément précédent s'il se produit n ou plusieurs fois.
{,m} Faire correspondre l'élément précédent s'il n'apparaît pas plus de m fois.
Pour revenir à notre exemple précédent avec les numéros de téléphone, nous pouvons utiliser cette méthode de spécification des répétitions pour simplifier notre expression régulière d'origine à partir de :
^\(?[0-9][0-9][0-9]\)? [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]$
à:
^\(?[0-9]{3}\)? [0-9]{3}-[0-9]{4}$
Essayons:
[moi@linuxbox ~]$ écho "(555) 123-4567" | grep -E '^\(?[0-9]{3}\) ? [0-9]{3}-[0-9]{4}$'
(555) 123-4567
[moi@linuxbox ~]$ écho "555 123-4567" | grep -E '^\(?[0-9]{3}\) ? [0-9]
{3}-[0-9]{4}$'
555 123-4567
[moi@linuxbox ~]$ écho "5555 123-4567" | grep -E '^\(?[0-9]{3}\) ? [0-9
]{3}-[0-9]{4}$'
[moi@linuxbox ~]$
[moi@linuxbox ~]$ écho "(555) 123-4567" | grep -E '^\(?[0-9]{3}\) ? [0-9]{3}-[0-9]{4}$'
(555) 123-4567
[moi@linuxbox ~]$ écho "555 123-4567" | grep -E '^\(?[0-9]{3}\) ? [0-9]
{3}-[0-9]{4}$'
555 123-4567
[moi@linuxbox ~]$ écho "5555 123-4567" | grep -E '^\(?[0-9]{3}\) ? [0-9
]{3}-[0-9]{4}$'
[moi@linuxbox ~]$
Comme nous pouvons le voir, notre expression révisée peut valider avec succès des nombres avec et sans parenthèses, tout en rejetant les nombres qui ne sont pas correctement formatés.