Solución:
([A-Z][a-z0-9]+)+
Suponiendo inglés. Utilice las clases de caracteres adecuadas si desea que sea internacionalizable. Esto coincidirá con palabras como “Esto”. Si solo desea hacer coincidir palabras con al menos dos mayúsculas, solo use
([A-Z][a-z0-9]+){2,}
ACTUALIZACIÓN: Como mencioné en un comentario, una mejor versión es:
[A-Z]([A-Z0-9]*[a-z][a-z0-9]*[A-Z]|[a-z0-9]*[A-Z][A-Z0-9]*[a-z])[A-Za-z0-9]*
Coincide con cadenas que comienzan con una letra mayúscula, contienen solo letras y números, y contienen al menos una letra minúscula y al menos otra letra mayúscula.
Estuche de camello inferior
esta expresión regular incluye número e implementos estricto caso de camello inferior según lo definido por la validación de expresiones regulares de la Guía de estilo Java de Google.
[a-z]+((d)|([A-Z0-9][a-z0-9]+))*([A-Z])?
- El primer carácter está en minúsculas.
- Los siguientes elementos son un solo número o un carácter en mayúscula seguido de caracteres en minúscula.
- El último carácter puede ser en mayúsculas.
Aquí hay un fragmento que ilustra esta expresión regular. Los siguientes elementos son válidos.
xmlHttpRequest
newCustomerId
innerStopwatch
supportsIpv6OnIos
youTubeImporter
youtubeImporter
affine3D
Caso de camello superior
Mismo principio que el utilizado para minúsculas camel con siempre un carácter inicial en mayúscula.
([A-Z][a-z0-9]+)((d)|([A-Z0-9][a-z0-9]+))*([A-Z])?
Aquí hay un fragmento que ilustra esta expresión regular. Los siguientes elementos son válidos.
XmlHttpRequest
NewCustomerId
InnerStopwatch
SupportsIpv6OnIos
YouTubeImporter
YoutubeImporter
Affine3D
La expresión regular que resolvió mi problema (nombrar correctamente los directorios que serán reconocidos por el servicio web FitNesse DbFit) es:
(^[A-Z][a-z0-9]+[A-Z]$)|(^[A-Z][a-z0-9]+([A-Z][a-z0-9]+)+$)|(^[A-Z][a-z0-9]+([A-Z][a-z0-9]+)+[A-Z]$)
Realicé ingeniería inversa de estas reglas particulares de CamelCase, son:
1. First character uppercase alpha
2. Next 1-n characters lowercase alphanumeric
3. Next character (n+1) uppercase alpha
4. Next 0 or more characters lowercase alphanumeric
No consecutive uppercase; no special characters.
Pattern may be repeated, e.g. NoChildLeftBehindSuite9102
La expresión pasó mi prueba de la siguiente manera:
Camel01C is CamelCase syntax
Camel01c01 is not CamelCase syntax
Camel01C01 is CamelCase syntax
Camel01CC01 is not CamelCase syntax
Camel0a1c1 is not CamelCase syntax
Camel0a1C1 is CamelCase syntax
Camel0ac1b1C1 is CamelCase syntax
CamelC is CamelCase syntax
CamelC1 is CamelCase syntax
CamelCA is not CamelCase syntax
CamelCa1 is CamelCase syntax
CamelCa_1 is not CamelCase syntax
IbsReleaseTestVerificationRegressionSuite is CamelCase syntax
IbsReleaseTestVerificationRegressioNSuite is not CamelCase syntax
IbsReleaseTestVerificationRegressioN is CamelCase syntax