2013-02-19 11 views
15

La definizione regolare per il riconoscimento di identificatori nel linguaggio di programmazione C è dato daRappresentare identificatori uso delle espressioni regolari

letter -> a|b|...z|A|B|...|Z|_ 
digit -> 0|1|...|9 
identifier -> letter(letter|digit)* 

Questa definizione genererà identificativi della forma

identificativo: [_a-zA-Z][_a-zA-Z0-9]*

La mia domanda ora è come limitare la lunghezza dell'identificatore che può essere generato a non più di 31 caratteri. Quali modifiche devono essere apportate nella definizione normale o come scrivere un'espressione regolare per limitarla a non più della lunghezza specificata. Qualcuno potrebbe aiutare per favore. Grazie.

risposta

20

L'espressione regolare che stai cercando è:

[_a-zA-Z][_a-zA-Z0-9]{0,30} 

abbinerà un sottolineano o lettera seguito da Xsottolinea, lettere o numeri, dove 0 <= X <= 30

+0

L'ho preso nel momento in cui gli altri due utenti hanno dato i loro suggerimenti ... grazie comunque. –

+0

@jerisalan ok. ho appena posto la mia domanda da quando hai chiesto su entrambe le risposte "qualsiasi modo possibile di cambiare la definizione regolare per ottenere lo stesso cambiamento". –

0

Per limitare la lunghezza, vengono solitamente utilizzati {}.
Ad esempio, la tua espressione regolare è stata [a-zA-Z0-9]+. Mezzi, permettono eventuali valori alfanumerici, e la lunghezza deve essere maggiore di uguale a 1. Se vogliamo limitare a non superare 31 caratteri, possiamo riscrivere la regex come:

[a-zA-Z0-9]{1,31} 

{1,31} indica che questo accetterà valori alfanumerici di lunghezza maggiore di uguale a 1 e minore di uguale a 31.
È possibile apportare le rispettive modifiche alla regex.

+0

Grazie ... qualsiasi modo possibile per modificare la definizione regolare per ottenere il sa io cambio –

+0

@jerisalan vedi la mia risposta. L'identificatore –

+4

non deve iniziare con una cifra e può includere '_'. –