6

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

例如HTMLParser不允许,必须命名HtmlParser。任何可以匹配PascalCase但没有两个大写字母的正则表达式的想法?

4

4 回答 4

17

骆驼香烟盒:

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

帕斯卡案例:

^[A-Z][a-z]+(?:[A-Z][a-z]+)*$
于 2010-01-21T01:57:00.880 回答
2
/([A-Z][a-z]+)*[A-Z][a-z]*/

但我不得不说你的命名选择很糟糕,应该允许和首选 HTMLParser。

于 2010-01-20T17:51:10.837 回答
2

我不相信列出的项目可以以数字开头(我以为我在某处读过它,所以请谨慎对待)所以最好的情况是像 Roger Pate 的一些小修改(在我看来)

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

应该类似于查找大写字母,然后是至少一个小写字母或数字,或者更多,并且看起来它只处理一个大写字母,因为这似乎是必需的,但其他字母是可选的。

祝你好运

于 2010-01-21T02:10:05.973 回答
2

^[A-Z][a-z]*([A-Z][a-z]*)

这应该适用于:

  1. 轻松搞定
  2. 精彩的
  3. 和我

这种类型的模式。

于 2019-04-08T07:25:15.047 回答