Regex que corresponde ao caso Camel e Pascal
-
21-09-2019 - |
Pergunta
Estou prestes a escrever um analisador para uma linguagem que deveria ter regras sintáticas estritas sobre nomenclatura de tipos, variáveis e coisas assim.Por exemplo todas as aulas deve ser PascalCase e todos os nomes de variáveis/parâmetros e outros identificadores deve seja camelCase.
Por exemplo HTMLParser
não é permitido e deve ser nomeado HtmlParser
.Alguma idéia para um regexp que possa corresponder a algo que é PascalCase, mas não contém duas letras maiúsculas?
Solução
cameloCaso:
^[a-z]+(?:[A-Z][a-z]+)*$
Caso Pascal:
^[A-Z][a-z]+(?:[A-Z][a-z]+)*$
Outras dicas
/([A-Z][a-z]+)*[A-Z][a-z]*/
Mas devo dizer que sua escolha de nomenclatura é péssima, HTMLParser deve ser permitido e preferido.
Não acredito que os itens listados possam começar com números (pensei ter lido em algum lugar, então aceite-o com cautela), então o melhor caso seria algo como o de Roger Pate com algumas pequenas modificações (na minha opinião)
/([A-Z][a-z0-9]+)*[A-Z][a-z0-9]*/
Deve ser algo como Procure uma letra maiúscula e, em seguida, pelo menos uma caixa pequena ou número, ou mais, e parece que lida apenas com uma letra maiúscula, pois isso parece ser necessário, mas as letras adicionais são opcionais.
Boa sorte
^[A-Z][a-z]*([A-Z][a-z]*)
Isso deve funcionar para:
- Faça facil
- Maravilhoso
- E eu
esses tipos de padrões.