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?

¿Fue útil?

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:

  1. MadeEasy
  2. WonderFul
  3. AndMe

Este tipo de patrones.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top