web-dev-qa-db-ja.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文字以下に制限する方法です。正規定義でどのような変更を行う必要があるか、または正規表現を記述して指定された長さ以下に制限する方法。誰か助けてくださいませんか。ありがとう。

19
Jeris Alan

あなたが探している正規表現は:

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

nderscoreまたはletterの後にXnderscoreslettersまたはnumbersが一致します、ここで_0 <= X <= 30_

25
Oscar Mederos

pdate:IDが数字で開始されないように正規表現を更新しました。

長さを制限するには、{}が通常使用されます。
たとえば、正規表現は[a-zA-Z0-9]+。つまり、任意の英数字値を許可し、長さは1以上でなければなりません。31文字を超えないように制限したい場合は、正規表現を次のように書き換えることができます。

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

{1,31}は、これが1以上31以下の英数字値を受け入れることを示します。

ただし、上記の正規表現は、識別子が数字で開始できることも意味します。 3つの範囲が提供されていることに注意してください:a-z、A-Z、および0-9。識別子がアルファベットで始まり、その後にアルファベットまたは数字が続くように制限するには、次の正規表現を使用できます。

[a-zA-Z][a-zA-Z0-9]{0-30}

最初の部分[a-zA-Z]は、識別子が文字で始まるように強制します。また、識別子が空でないことも確認します。正規表現の残りの部分[a-zA-Z0-9]{0-30}を使用すると、文字と数字のみが受け入れられ、最初の文字に加えて、最大30個まで識別子に追加できます。

正規表現にそれぞれの変更を加えることができます。

0
Ali Shah Ahmed