2013-02-19 16 views
15

Regularne definicja uznawania identyfikatorów w języku programowania C jest podane przezreprezentowanie identyfikatory Korzystanie z wyrażeń regularnych

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

definicja ta będzie generować identyfikatory postaci

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

Moje pytanie teraz w jaki sposób można ograniczyć długość generowanego identyfikatora do nie więcej niż 31 znaków? Jakie zmiany należy wprowadzić w zwykłej definicji lub jak napisać wyrażenie regularne, aby ograniczyć je do nie więcej niż określonej długości. Czy ktoś mógłby ci pomóc. Dzięki.

Odpowiedz

20

Wyrażenie regularne szukasz jest:

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

Będzie dopasować podkreślenia lub list brzmienie Xpodkreślenia, litery lub numery, gdzie 0 <= X <= 30

+0

Dostałem go w momencie, gdy pozostali dwaj użytkownicy podali swoje sugestie ... dzięki. –

+0

@jerisalan ok. właśnie postawiłem moje pytanie, ponieważ zapytałeś w obu odpowiedziach "w jakikolwiek możliwy sposób zmienić zwykłą definicję, by spowodować tę samą zmianę". –

0

Aby ograniczyć długość, zwykle używane są {}.
Na przykład Twoje wyrażenie regularne brzmiało: [a-zA-Z0-9]+. Znaczy, pozwalają żadnych wartości alfanumerycznych, a długość musi być większa niż jest równa 1. Jeśli chcemy ograniczyć to, aby nie przekroczyć 31 znaków, możemy przepisać regex jako:

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

{1,31} wskazuje że zaakceptuje wartości alfanumeryczne o długości większej niż 1 i mniejszej niż 31.
Możesz wprowadzić odpowiednie zmiany w swoim wyrobie regularnym.

+0

Dzięki ... każdy możliwy sposób na zmianę zwykłej definicji w celu uzyskania zmieniam się. –

+0

@jerisalan zobacz moją odpowiedź. –

+4

Identyfikator nie może zaczynać się od cyfry i może zawierać "_". –

Powiązane problemy