型や変数などの命名に関して厳密な構文規則を持つはずの言語用のパーサーを書こうとしています。たとえば、すべてのクラスは PascalCase である必要があり、すべての変数/パラメーター名およびその他の識別子はcamelCase である必要があります。
たとえば、HTMLParser
は許可されておらず、名前を付ける必要がありますHtmlParser
。PascalCase に一致するが、大文字が 2 文字含まれていない正規表現のアイデアはありますか?
型や変数などの命名に関して厳密な構文規則を持つはずの言語用のパーサーを書こうとしています。たとえば、すべてのクラスは PascalCase である必要があり、すべての変数/パラメーター名およびその他の識別子はcamelCase である必要があります。
たとえば、HTMLParser
は許可されておらず、名前を付ける必要がありますHtmlParser
。PascalCase に一致するが、大文字が 2 文字含まれていない正規表現のアイデアはありますか?
キャメルケース:
^[a-z]+(?:[A-Z][a-z]+)*$
PascalCase:
^[A-Z][a-z]+(?:[A-Z][a-z]+)*$
リストされている項目が数字で始まるとは思えません (どこかで読んだので、一粒の塩で考えてください)。したがって、最良のケースは、Roger Pate のようなもので、いくつかのマイナーな変更が加えられたものになります (私の意見では)。
/^([A-Z][a-z0-9]+)*[A-Z][a-z0-9]*$/
大文字を探してから、少なくとも 1 つの小文字または数字、またはそれ以上のようなものにする必要があります。また、必要に応じて大文字のみを処理するように見えますが、追加の文字はオプションです。
幸運を
/([A-Z][a-z]+)*[A-Z][a-z]*/
しかし、あなたの命名の選択は悪臭を放っていると言わざるを得ません。HTMLParser を許可し、優先する必要があります。