Подтвердить что ты не робот

Представление идентификаторов с использованием регулярного выражения

Регулярное определение распознавания идентификаторов на языке программирования C задается

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

Это определение будет генерировать идентификаторы формы

идентификатор: [_a-zA-Z][_a-zA-Z0-9]*

Теперь мой вопрос заключается в том, как ограничить длину идентификатора, который может быть сгенерирован не более чем до 31 символа. Какие изменения необходимо внести в регулярное определение или как написать регулярное выражение, чтобы ограничить его не более указанной длины. Может ли кто-нибудь помочь. Спасибо.

4b9b3361

Ответ 1

Регулярное выражение, которое вы ищете, это:

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

Он будет соответствовать подчеркиванию или букве, следующим под X подчеркиваниями, буквами или цифрами, где 0 <= X <= 30

Ответ 2

Чтобы ограничить длину, обычно используются {}.
Например, ваше регулярное выражение было [a-zA-Z0-9]+. Значит, допускайте любые буквенно-цифровые значения, а длина должна быть больше, чем 1. Если мы хотим ограничить ее не более 31 символа, мы можем переписать регулярное выражение так:

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

{1,31} указывает, что это будет принимать буквенно-цифровые значения длины, превышающие 1, и меньше, чем 31.
Вы можете внести соответствующие изменения в свое регулярное выражение.