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?

Foi útil?

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:

  1. Faça facil
  2. Maravilhoso
  3. E eu

esses tipos de padrões.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top