使用正则表达式表示标识符

时间:2013-02-19 09:19:48

标签: regex computer-science regular-language

用C语言识别标识符的常规定义由

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

此定义将生成表单

的标识符

标识符:[_a-zA-Z][_a-zA-Z0-9]*

我现在的问题是如何将生成的标识符的长度限制为不超过31个字符。需要在常规定义中进行哪些更改,或者如何编写正则表达式以将其限制为不超过指定的长度。有谁可以帮忙。感谢。

2 个答案:

答案 0 :(得分:24)

您正在寻找的正则表达式是:

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

它将匹配下划线字母以下X 下划线字母或< em>数字,其中0 <= X <= 30

答案 1 :(得分:0)

要限制长度,通常会使用{} 例如,您的正则表达式为[a-zA-Z0-9]+。意味着,允许任何字母数字值,并且长度必须大于等于1.如果我们想限制它不超过31个字符,我们可以将正则表达式重写为:

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

{1,31}表示这将接受长度大于等于1且小于等于31的字母数字值。
您可以对正则表达式进行相应的更改。