Domanda

che sto per scrivere un parser per un linguaggio che dovrebbe avere regole sintattiche severe sulla denominazione dei tipi di variabili, e così via. Per esempio tutte le classi deve essere PascalCase, e tutte le variabili / nomi dei parametri e altri identificatori deve essere camelCase.

Per esempio HTMLParser non è consentito e deve essere nominato HtmlParser. Tutte le idee per un'espressione regolare che può abbinare qualcosa che è PascalCase, ma non ha due lettere maiuscole in esso?

È stato utile?

Soluzione

camelCase:

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

PascalCase:

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

Altri suggerimenti

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

Ma devo dire che la scelta di denominazione puzza, HTMLParser dovrebbe essere consentito e preferito.

Non credo che gli elementi elencati può iniziare con i numeri (pensato che ho letto da qualche parte in modo da prendere con un grano di sale) in modo che il caso migliore sarebbe qualcosa di simile a Roger Pate di con alcune piccole modifiche (a mio parere)

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

dovrebbe essere qualcosa di simile, per cercare una lettera maiuscola, quindi almeno un piccolo caso o un numero, o più, così come sembra che gestisce solo una lettera maiuscola come quella sembra essere richiesto, ma le lettere aggiuntive sono facoltativa.

In bocca al lupo

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

Questo dovrebbe funzionare per:

  1. MadeEasy
  2. WonderFul
  3. andme

Questo tipo di schemi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top