2013-02-19 69 views
15

在C程序設計語言識別標識的普通定義是由使用正則表達式代表標識符

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

這個定義給出將產生形式的標識符

標識符:[_a-zA-Z][_a-zA-Z0-9]*

我現在的問題是如何限制可以生成的標識符的長度不超過31個字符。在常規定義中需要做什麼修改,或者如何編寫一個正則表達式來限制它不超過指定的長度。任何人都可以請幫忙。謝謝。

回答

20

你正在尋找的正則表達式爲:

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

它將匹配強調通過X強調,以下字母數字,其中0 <= X <= 30

+0

我知道了其他兩位用戶提出建議的時刻......無論如何感謝。 – 2013-02-19 09:39:07

+0

@ jerisalan好的。只是提出了我的問題,因爲你問兩個答案「任何可能的方式來改變常規的定義,以實現相同的變化」。 – 2013-02-19 09:39:54

0

要限制長度,通常使用{}
例如,你的正則表達式是[a-zA-Z0-9]+。手段,允許任何字母數字值,且長度必須大於等於1。如果我們要限制它不超過31個字符,我們可以重寫正則表達式爲:

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

{1,31}表示這將接受長度大於等於1且小於等於31的字母數字值。
您可以對您的正則表達式進行相應的更改。

+0

謝謝...任何可能的方法來改變常規定義,以實現sa我改變。 – 2013-02-19 09:33:39

+0

@jerisalan看到我的答案。 – 2013-02-19 09:37:58

+4

標識符不能以數字開頭,可能包含'_'。 – 2014-09-19 15:17:15