2013-02-19 5 views
15

C 프로그래밍 언어에서 식별자를 인식하는 정규 정의 식별자대표 식별자는

형태의 식별자를 생성합니다

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

이 정의에 의해 주어진다 31 자 이하로 생성 할 수있는 식별자의 길이를 어떻게 제한합니까? 정규 정의에서 변경해야 할 사항 또는 지정된 길이를 초과하지 않도록 정규식을 작성하는 방법 아무도 도와 줄 수 없습니까? 감사.

답변

20

당신이 찾고있는 정규 표현식은 다음과 같습니다

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

그것은 강조 X에 의해 다음 또는 편지이 강조 일치 문자 또는 숫자, 0 <= X <= 30

+0

다른 두 명의 사용자가 제안을 한 순간 ... 감사합니다. –

+0

@jerisalan ok. 두 질문에 대한 답변을 "같은 정의를 가져 오기 위해 정규 정의를 변경할 수있는 가능한 모든 방법"에 대한 질문을 한 이후로 내 질문을 배치했습니다. –

0

길이를 제한하려면 일반적으로 {}이 사용됩니다.
예를 들어, 정규 표현식은 [a-zA-Z0-9]+입니다.

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

{1,31}를 나타냅니다 : 우리가 정규식을 다시 작성할 수 있습니다, 수단, 영숫자 값을 허용하고, 우리가 31자를 초과하지 않도록 제한하려면 길이는 1로 동일보다 커야합니다 1보다 크고 31보다 작은 길이의 영숫자 값을 사용할 수 있습니다.
정규 표현식을 개별적으로 변경할 수 있습니다.

+0

감사합니다 ... sa를 가져 오기 위해 정규 정의를 변경할 수있는 모든 방법 나는 바뀐다. –

+0

@jerisalan 내 대답을 참조하십시오. –

+4

식별자는 숫자로 시작하면 안되며 '_'을 포함 할 수 있습니다. –