(Lo siento por mi error anterior cerebro ahora firmemente comprometida Er, probablemente...)
Esto funciona:
String rex = "^\\d+\\.\\s\\p{Lu}+.*";
System.out.println("1. PTYU fmmflksfkslfsm".matches(rex));
// true
System.out.println(". PTYU fmmflksfkslfsm".matches(rex));
// false, missing leading digit
System.out.println("1.PTYU fmmflksfkslfsm".matches(rex));
// false, missing space after .
System.out.println("1. xPTYU fmmflksfkslfsm".matches(rex));
// false, lower case letter before the upper case letters
Descomponiéndola:
^
= Start de la cadena
\d+
= Uno o más dígitos (el \
se escaparon porque está en una cadena, por lo tanto, \\
)
\.
= Un literal .
(o el original [.]
está muy bien) (de nuevo, se escapó en la cadena)
\s
= Una carbón espacios en blanco (sin necesidad de que el {1}
después de él) (voy a dejar de mencionar los escapes ahora)
\p{Lu}+
= Uno o más letras mayúsculas (utilizando el escape de Unicode adecuada — gracias, tchrist, por señalar esto en tu comentario a continuación. En términos ingleses, el equivalente sería [A-Z]+
)
.*
= Algo más
Ver the documentation here para más detalles.
Sólo es necesario el .*
al final si usted está utilizando un método como String#match
(arriba), que tratará de igualar la entera cadena de .
[Coincide conmigo] (http://regexpal.com/?flags=®ex=^\d%2B [.] \ S {1} [AZ]% 2B y entrada = 1.% 20PTYU% 20fmmflksfkslfsm) pero podría ser reescrito a '^ \ d + \.\ s [A-Z] + ' –
' {1} 'es redundante: solo satura la expresión y puede (debería) eliminarse a favor de la claridad. –
Lea acerca de Java y regex: http://www.regular-expressions.info/java.html. @AlexR y @codaddict tienen razón. Necesita usar '\\' en Java para crear uno '\'. –