Expresiones regulares que los partidos de camello y Pascal Case
-
21-09-2019 - |
Pregunta
Estoy a punto de escribir un analizador de lenguaje que se supone que tienen reglas sintácticas estrictas sobre el nombramiento de los tipos, variables y tal. Por ejemplo, todas las clases debe ser PascalCase, y todas las variables / nombres de los parámetros y otros identificadores debe sean camelCase.
Por ejemplo, no está permitido HTMLParser
y debe ser nombrado HtmlParser
. ¿Alguna idea para una expresión regular que puede coincidir con algo que es PascalCase, pero no tiene dos letras mayúsculas en ella?
Solución
camelCase:
^[a-z]+(?:[A-Z][a-z]+)*$
PascalCase:
^[A-Z][a-z]+(?:[A-Z][a-z]+)*$
Otros consejos
/([A-Z][a-z]+)*[A-Z][a-z]*/
Pero tengo que decir que sus hedores elección de nombres, HTMLParser se debe permitir y preferido.
no creo que los elementos enumerados pueden comenzar con los números (que se cree que lo leí en algún lugar para tomar con un grano de sal) por lo que el mejor de los casos sería algo así como Roger Pate de con algunas modificaciones menores (en mi opinión)
/([A-Z][a-z0-9]+)*[A-Z][a-z0-9]*/
Debería ser algo como, busque una letra mayúscula, a continuación, al menos una pequeña caja o un número, o más, así como parece que maneja sólo una letra mayúscula ya que parece ser necesaria, pero las letras adicionales son opcional.
Buena suerte
^[A-Z][a-z]*([A-Z][a-z]*)
Esto debería funcionar para:
- MadeEasy
- WonderFul
- AndMe
Este tipo de patrones.