Question

Je suis sur le point d'écrire un analyseur syntaxique pour une langue qui est censé avoir des règles syntaxiques strictes sur les noms des types, variables et autres. Par exemple toutes les classes doivent être PascalCase, et toutes les variables / noms de paramètres et d'autres identifiants doivent être camelCase.

Par exemple HTMLParser n'est pas autorisé et doit être nommé HtmlParser. Toutes les idées pour une expression rationnelle qui peut correspondre à quelque chose qui est PascalCase, mais ne dispose pas de deux lettres majuscules en elle?

Était-ce utile?

La solution

camelCase:

^[a-z]+(?:[A-Z][a-z]+)*$

PascalCase:

^[A-Z][a-z]+(?:[A-Z][a-z]+)*$

Autres conseils

/([A-Z][a-z]+)*[A-Z][a-z]*/

Mais je dois dire que votre choix de nom pue, HTMLParser doit être accueilli et préféré.

Je ne crois pas que les éléments énumérés peuvent commencer avec des chiffres (pensé je l'ai lu prendre quelque part donc avec un grain de sel) de sorte que le meilleur des cas serait quelque chose comme Roger Pate est avec quelques modifications mineures (à mon avis)

/([A-Z][a-z0-9]+)*[A-Z][a-z0-9]*/

doit être quelque chose comme, Cherchez une Lettre majuscule, alors au moins un petit cas ou un numéro, ou plus, ainsi que cela ressemble à elle gère juste une lettre majuscule comme cela semble être nécessaire, mais les lettres supplémentaires sont en option.

Bonne chance

^[A-Z][a-z]*([A-Z][a-z]*)

Cela devrait fonctionner pour:

  1. MadeEasy
  2. WONDERFUL
  3. etMe

ce type de crépite.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top