我正在嘗試使用正則表達式來解析小寫的枚舉,例如: 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
提交
取消