The regular definition for recognizing identifiers in C programming language is given by
letter -> a|b|...z|A|B|...|Z|_
digit -> 0|1|...|9
identifier -> letter(letter|digit)*
This definition will generate identifiers of the form
identifier: [_a-zA-Z][_a-zA-Z0-9]*
My question now is how do you limit the length of the identifier that can be generated to not more than 31 characters. What changes need to be made in the regular definition or how to write a regular expression to limit it to not more than the specified length. Could anyone please help. Thanks.
The regular expression you are looking for is:
[_a-zA-Z][_a-zA-Z0-9]{0,30}
It will match an underscore or letter following by X underscores, letters or numbers, where 0 <= X <= 30
To limit the length, {} are usually used.
For example, your regex was [a-zA-Z0-9]+. Means, allow any alphanumeric values, and the length must be greater than equals to 1. If we want to limit it not to exceed 31 characters, we can rewrite the regex as:
[a-zA-Z0-9]{1,31}
{1,31} indicates that this will accept alphanumeric values of length greater than equals to 1 and less than equals to 31.
You can make respective changes to your regex.
来源:https://stackoverflow.com/questions/14953861/representing-identifiers-using-regular-expression