我正在尝试使用正则表达式来解析小写的枚举,例如: enum TransparencyState { Gone, Translucent, Opaque }或者 enum TransparencyState { gone, translucent, opaque }但是,我能得到的最接近的是(?:enum\s+[a-zA-Z0-9]+\s*\{|\G)\s+([a-zA-Z0-9_,\s]*)(?=[^{}]*\}),但这并不完全有效。理想情况下,它只会匹配枚举列表中的小写常量,除了所有大写字母(基本上是如下所示的常量形式)。它不匹配: enum TransparencyState { GONE, TRANSLUCENT, OPAQUE_OR_DULL }任何帮助将不胜感激。
2 回答
蛊毒传说
TA贡献1895条经验 获得超3个赞
试试这个正则表达式:
^enum[^{]*{\s*(?!\b[A-Z]+\b)(\w+(?:\s*,\s*(?!\b[A-Z]+\b)\w+)*)\s*}
在 JAVA 中,相互\
转义\
解释:
^
- 断言行首enum[^{]*{\s*
- 匹配enum
后跟 0+ 次出现的任何非 a{
后跟 a{
后跟 0+ 空格的字符,尽可能多(?!\b[A-Z]+\b)
- 负前瞻以确保下一个单词(枚举值)不只包含大写字母\w+
- 匹配 1+ 个单词字母(仅当上述否定前瞻条件为真时)(?:\s*,\s*(?!\b[A-Z]+\b)\w+)*
- 匹配 0+ 个其他此类枚举值\s*}
- 匹配 0+ 个空格,后跟一个}
添加回答
举报
0/150
提交
取消