web-dev-qa-db-fra.com

Représentation d'identifiants à l'aide d'une expression régulière

La définition habituelle de la reconnaissance des identifiants en langage de programmation C est donnée par 

letter -> a|b|...z|A|B|...|Z|_
digit -> 0|1|...|9
identifier -> letter(letter|digit)*

Cette définition générera des identifiants de la forme 

identifiant: [_a-zA-Z][_a-zA-Z0-9]*

Ma question maintenant est de savoir comment limiter la longueur de l'identifiant pouvant être généré à 31 caractères maximum. Quelles modifications doivent être apportées à la définition régulière ou comment écrire une expression régulière pour la limiter à la longueur spécifiée? Quelqu'un pourrait-il s'il vous plaît aider. Merci.

18
Jeris Alan

L'expression régulière que vous recherchez est:

[_a-zA-Z][_a-zA-Z0-9]{0,30}

Il correspondra à un trait de soulignement ou lettre suivi de X traits de soulignement , lettres ou chiffres , où 0 <= X <= 30

24
Oscar Mederos

{} est généralement utilisé pour limiter la longueur.
Par exemple, votre expression rationnelle était [a-zA-Z0-9]+. Autrement dit, autorise toutes les valeurs alphanumériques et la longueur doit être supérieure à égale à 1. Si nous voulons limiter celle-ci à 31 caractères, nous pouvons réécrire la regex comme suit:

[a-zA-Z0-9]{1,31}

{1,31} indique que cela acceptera les valeurs alphanumériques de longueur supérieure à égale à 1 et inférieure à égale à 31.
Vous pouvez apporter des modifications à votre expression rationnelle.

0
Ali Shah Ahmed