it-roy-ru.com

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

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

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

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

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

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

18
Jeris Alan

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

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

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

24
Oscar Mederos

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

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

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

0
Ali Shah Ahmed