代码之家  ›  专栏  ›  技术社区  ›  Marcin

与驼色和帕斯卡相匹配的Regex

  •  3
  • Marcin  · 技术社区  · 15 年前

    我将为一种语言编写一个解析器,这种语言应该对类型、变量等的命名有严格的语法规则。例如,所有类 必须 是pascalcase,以及所有变量/参数名和其他标识符 必须 是骆驼。

    例如 HTMLParser 不允许,必须命名 HtmlParser . 对于一个regexp有什么想法可以匹配pascalcase,但是它没有两个大写字母?

    3 回复  |  直到 15 年前
        1
  •  7
  •   Alix Axel    15 年前

    骆驼箱:

    ^[a-z]+(?:[A-Z][a-z]+)*$
    

    PascalCase:

    ^[A-Z][a-z]+(?:[A-Z][a-z]+)*$
    
        2
  •  3
  •   Roger Pate    15 年前
    /([A-Z][a-z]+)*[A-Z][a-z]*/
    

    但我不得不说,您的命名选择很糟糕,应该允许并首选htmlparser。

        3
  •  1
  •   onaclov2000    15 年前

    我不相信列出的项目可以从数字开始(我以为我在某个地方读过,所以拿着一粒盐),所以最好的情况是像罗杰·帕特的那样,稍加修改(在我看来)。

    /([A-Z][a-z0-9]+)*[A-Z][a-z0-9]*/
    

    应该是这样的:寻找一个大写字母,然后至少有一个小写字母或数字,或者更多,而且它看起来只处理一个大写字母,这似乎是必需的,但附加的字母是可选的。

    祝你好运