Expresiones regulares para buscar minúsculas constantes de enumeración

Jason Cromer:

Estoy tratando de utilizar una expresión regular para enumeraciones de análisis sintáctico que son minúsculas, por ejemplo:

 enum TransparencyState {
        Gone, Translucent, Opaque
    }

o

 enum TransparencyState {
        gone, 
        translucent, 
        opaque
    }

Sin embargo, lo más cerca que puedo conseguir es (?:enum\s+[a-zA-Z0-9]+\s*\{|\G)\s+([a-zA-Z0-9_,\s]*)(?=[^{}]*\}), pero eso no hace exactamente trabajo. Idealmente, sólo coincidiría con las constantes minúsculas en una lista de enumeraciones, cualquier cosa excepto todo mayúsculas (esencialmente en forma constante, como a continuación).

No se correspondería con:

 enum TransparencyState {
        GONE, TRANSLUCENT, OPAQUE_OR_DULL
    }

Cualquier ayuda en gran medida sería apreciada.

Patata Tsu:

Prueba esta expresión regular:

^enum[^{]*{\s*(?!\b[A-Z]+\b)(\w+(?:\s*,\s*(?!\b[A-Z]+\b)\w+)*)\s*}

Hacer clic para una demostración

En JAVA, escapar cada \con otra\

Explicación:

  • ^ - afirma el principio de la línea
  • enum[^{]*{\s*- partidos enumseguidos por 0+ ocurrencias de cualquier carácter que no es un {seguido de un {seguido de 0+ espacios en blanco, el mayor número posible
  • (?!\b[A-Z]+\b) - búsqueda negativa hacia delante para asegurarse de que la siguiente palabra (valor de enumeración) no contiene sólo letras captial
  • \w+ - partidos 1+ ocurrencias de letras de palabras (sólo si la condición negativa de búsqueda hacia delante es verdadera)
  • (?:\s*,\s*(?!\b[A-Z]+\b)\w+)* - Partidos 0+ otros valores de enumeración
  • \s*} - Partidos 0+ espacios en blanco seguidos por una }

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=232369&siteId=1
Recomendado
Clasificación